CC2530
CC2530是针对IEEE 802.15.4,Zigbee和RF4CE应用的真正片上系统(SoC)解决方案。 它能够以非常低的总物料成本构建强大的网络节点。 CC2530将领先的射频收发器的卓越性能与业界标准增强型8051 MCU,系统内可编程闪存,8 KB RAM以及许多其他强大功能相结合。 CC2530有四种不同的闪存版本:分别为CC2530F32 / 64/128/256对应32/64/128/256 KB的闪存。 CC2530具有多种工作模式,非常适合需要超低功耗的系统。 运行模式之间的短暂转换时间进一步确保了低能耗。
•CC2530是TI公司推出的用来实现嵌入式ZigBee应用的低功耗片上系统。
•在单个芯片上整合了ZigBee 射频(RF)前端、内存和微控制器。
•8 位MCU(增强型、标准8051指令集)。
•256 KB Flash和8 KB 的RAM,内部16MHz RC 和 32kHz RC 振荡器。
•8路12位ADC;18个中断源;4个Timer;硬件支持的AES128 ;WDT(1.9ms-1s);32 kHz晶振的休眠模式定时器、POR(上电复位)、BOD(掉电检测),以及21 个通用I/O 。
GPIO
简介
I / O端口具有以下主要功能:
- 21个数字通用输入/输出引脚
- 通用I / O或外设I / O
- 输入上拉或下拉功能
- 外部中断功能
所有21个I / O引脚都具有外部中断功能。 因此,如果需要,外部设备可能会产生中断。 外部中断功能也可用于将器件从睡眠模式(电源模式PM1,PM2和PM3)中唤醒
通用IO:共21个,分成3组,P0组、P1组、P2组,其中P0\P1组各8个IO,P2组5个(P2_0、P2_1、 P2_2、P2_3、 P2_4)。其中P1_0、P1_1有20mA的输出驱动能力,其余的只有4mA。
寄存器
GPIO功能选择寄存器——PxSEL
寄存器PxSEL(其中x是端口号0-2)用于将端口中的每个引脚配置为通用I/O引脚或外设I/O引脚,可位寻址。 默认情况下,复位后,所有数字输入/输出引脚都配置为通用上拉输入引脚。
其中,P2SEL只有第0位至第2位是端口2的功能选择控制位,第3位至第6位是端口1的外设优先级控制位。
- 0=通用
- 1=外设I/O
GPIO输入输出方向选择寄存器——PxDIR
寄存器PxDIR用于将每个端口的引脚方向设置为输入方向或输出方向。 因此,将PxDIR中的相应位设置为1,相应的引脚就变成输出方向,可位寻址。复位后为输入引脚。
其中,P2DIR只有第0位至第4位是端口2的方向选择控制位,第6位和第7位是端口0外设优先级控制位。
0=输入
1=输出
GPIO输入模式寄存器——PxINP
寄存器PxINP用于设置IO端口的输入模式,通用I / O端口引脚可配置为具有上拉,下拉或三态操作模式。 默认情况下,复位后,输入配置为带有上拉的输入。如果要取消输入端口的上拉或下拉功能,必须将PxINP中的相应位设置为1。
- 请注意,即使IO端口是外设功能输入,配置为外设I / O信号的引脚也不具有上拉或下拉功能。
其中,P2INP中,第0位至第4位是端口2的输入模式选择位
第5位至第7位是端口0、端口1、端口2的上下拉选择位。
- 0=PullUp
- 1=PullDown
- 0=上拉或下拉
- 1=三态
Z-Stack
创建一个任务 Create Task
- // 任务列表
const pTaskEventHandlerFn tasksArr[] = {…..} - // 初始化任务
void osalInitTasks( void )
{…..} - // 任务处理函数
uint16 Hello_ProcessEvent(uint8 task_id, uint16 events)
{…}
HAL库之LED
- uint8 HalLedSet (uint8 leds, uint8 mode)
ModeName | 作用 |
---|---|
HAL_LED_MODE_BLINK | 闪烁 (一次) |
HAL_LED_MODE_FLASH | 闪烁 |
HAL_LED_MODE_ON | |
HAL_LED_MODE_OFF | |
HAL_LED_MODE_TOGGLE | 触发 |
定时器
uint8 osal_start_timerEx( uint8 taskID, uint16 event_id, uint16 timeout_value )
1
2
3//为指定的任务设置定时器
osal_start_timerEx(task_id, 0x0001, 10000);
PAN_ID
全称 Personal Area Network (网络标识符)
相当于网络号,网段。
Tools\f8Config.cfg Line59
1 |
|
Z-Stack开发步骤
功能类型定义
1 |
|
枚举功能类型值,需要时添加即可。
定义节点功能列表
1 |
|
功能列表
参考下面的 ep_info_t
1
2
3
4
5// 不能修改下面的内容!!!
const uint8 funcCount = sizeof(funcList) / sizeof(funcList[0]);
#endif功能数量
ep_info_t
1 |
|
nwk_stat_change
节点加入网络完成后调用
- 可用于读取当前 端点 信息
1 |
|
incoming_data
端点接收到数据后会调用
- 下发的指令的处理
1 |
|
time_out
周期调用
- 读取传感器数据
1 |
|
res_available
系统初始化、串口收到数据、用户定时器到时 会调用
- 初始化端口、
1 |
|
IAR学习笔记
无法观察局部变量
在软件调试的时候发现Watch窗口中无法观察局部变量的值,总是显示
设置IAR中的”Options — c/c++ compiler — Optimization — Level“ 选项:
Level的缺省值为Low,当我把Level选为None之后,即不执行任何优化时,全局变量、静态局部变量、局部变量的值都可以看到。