为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

CC2530基础实验V1.00

2017-11-11 50页 doc 367KB 59阅读

用户头像

is_574951

暂无简介

举报
CC2530基础实验V1.00CC2530基础实验V1.00 ZigBee 无线 SOC 片上系统 CC2530 基础试验手册 成都无线龙通讯科技有限公司 2009 年 08 月 声明:此手册由成都无线龙结合在实际开发过程中对芯片使用以及网络上各工程师对英文 手册的翻译整理而成,文中难免有错误及误差,如果你有兴趣完善本手册,请通过邮件 c51rf@126.com 把你的建议发给我们,我们及各使用此芯片工程师将非常感谢你的努力,谢谢! 目 录 CC2530 基础实验 .........................................
CC2530基础实验V1.00
CC2530基础实验V1.00 ZigBee 无线 SOC 片上系统 CC2530 基础试验手册 成都无线龙通讯科技有限公司 2009 年 08 月 声明:此手册由成都无线龙结合在实际开发过程中对芯片使用以及网络上各工程师对英文 手册的翻译整理而成,文中难免有错误及误差,如果你有兴趣完善本手册,请通过邮件 c51rf@126.com 把你的建议发给我们,我们及各使用此芯片工程师将非常感谢你的努力,谢谢! 目 录 CC2530 基础实验 .................................................................................................................................. 3 1.1 输入输出 I/O 控制实验 ................................................................................................................ 3 1.1.1CC2530 基础实验 1:自动闪烁......................................................................................... 3 1.1.2CC2530 基础实验 2:按键控制开关................................................................................. 5 1.1.3CC2530 基础实验 3:按键控制闪烁................................................................................. 6 1.2 定时/计数器实验........................................................................................................................... 7 1.2.1CC2530 基础实验 4:T1 使用 ........................................................................................... 7 1.2.2CC2530 基础实验 5:T2 使用 ........................................................................................... 8 1.2.3CC2530 基础实验 6:T3 使用 ......................................................................................... 11 1.2.4CC2530 基础实验 7:T4 使用 ......................................................................................... 15 1.3 中断实验...................................................................................................................................... 20 1.3.1CC2530 基础实验 8:定时器中断................................................................................... 20 1.3.2CC2530 基础实验 9:外部中断....................................................................................... 22 1.4AD 实验........................................................................................................................................ 25 1.4.1CC2530 基础实验 10:片内温度..................................................................................... 25 1.4.2CC2530 基础实验 11:1/3AVDD..................................................................................... 32 1.4.3CC2530 基础实验 12:AVDD ......................................................................................... 34 1.5UART 串口................................................................................................................................... 36 1.5.1CC2530 基础实验 13:单片机串口发数......................................................................... 36 1.5.2CC2530 基础实验 14:在 PC 用串口控制 LED ............................................................. 37 1.5.3CC2530 基础实验 15:PC 串口收数并发数................................................................... 40 5.4CC2530 基础实验 16:串口时钟 PC 显示...................................................................... 421. 1.6 睡眠定时器实验.......................................................................................................................... 47 1.6.1CC2530 基础实验 17:系统睡眠工作状态..................................................................... 47 1.6.2CC2530 基础实验 18:系统唤醒..................................................................................... 49 1.11.4CC2530 基础实验 19:睡眠定时器使用....................................................................... 51 1.11.5CC2530 基础实验 20:定时唤醒................................................................................... 54 1.7 看门狗.......................................................................................................................................... 55 1.7.1CC2530 基础实验 21:看门狗模式................................................................................. 56 1.7.2CC2530 基础实验 22:喂狗 ............................................................................................ 57 CC2530 基础实验 1.1 输入输出 I/O 控制实验 1.1.1CC2530 基础实验 1:自动闪烁 实验介绍 本次实验的目的是让用户学会使用 CC2530 的 I/0 来控制外设,本例以 LED 灯为外设,用 CC2530 控制简单外设时,应将 I/O 设置为输出。实验现象 LED 闪烁。 实验设备:仿真器 1 台,电池板(或液晶板)1 块,ZigBee 模块 1 块,USB 连接线 1 根。 实验相关寄存器 ,P1DIR,没有设置而是取默认值的寄存器有:P1SEL,P1INP。 实验中操作了的寄存器有 P1 P1 (P1 口寄存器) 位号位名复位值操作性功能描述7:0 P1[7:0] 0x00 读/写P1 端口普通功能寄存器,可位寻址 P1DIR (P1 方向寄存器) 位号位名复位值操作性功能描述7 DIRP1_7 0 读/写P1_7 方向 0 输入,1 输出 6 DIRP1_6 0 读/写P1_6 方向 0 输入,1 输出 5 DIRP1_5 0 读/写P1_5 方向 0 输入,1 输出 4 DIRP1_4 0 读/写P1_4 方向 0 输入,1 输出 3 DIRP1_3 0 读/写P1_3 方向 0 输入,1 输出 2 DIRP1_2 0 读/写P1_2 方向 0 输入,1 输出 1 DIRP1_1 0 读/写P1_1 方向 0 输入,1 输出 0 DIRP1_0 0 读/写P1_0 方向 0 输入,1 输出 P1SEL (P1 功能选择寄存器) 位号位名复位值操作性功能描述7 SELP1_7 0 读/写P1_7 功能 0 普通 I/O,1 外设功能 6 SELP1_6 0 读/写P1_6 功能 0 普通 I/O,1 外设功能 5 SELP1_5 0 读/写P1_5 功能 0 普通 I/O,1 外设功能 4 SELP1_4 0 读/写P1_4 功能 0 普通 I/O,1 外设功能 3 SELP1_3 0 读/写P1_3 功能 0 普通 I/O,1 外设功能 2 SELP1_2 0 读/写P1_2 功能 0 普通 I/O,1 外设功能 1 SELP1_1 0 读/写P1_1 功能 0 普通 I/O,1 外设功能 0 SELP1_0 0 读/写P1_0 功能 0 普通 I/O,1 外设功能 实验相关 void Delay(uint n);函数原型是 void Delay(uint n) { uint tt; for(tt = 0;tt0xffff); } 函数功能是将 P10,P11 设为输出,并将定时器 1 设为自动重装模式,计数时钟为 0.25M。 1.2.2CC2530 基础实验 5:T2 使用 实验介绍 用定时器 2 来改变小灯的状态,T2 每发生一次中断小灯改变状态一次。 实验相关寄存器 实验中操作了的寄存器有 P1,P1SEL,P1DIR,T2CTRL,T2M0,T2IRQM 等寄存器。 P1 参见 CC2530 实验 1 P1SEL 参见 CC2530 实验 1 P1DIR 参见 CC2530 实验 1 T2CTRL(T2 配置寄存器) 位号位名复位值操作性功能描述 - 0 7:4保留,读 0读 3 LATCH_MODE 0 读/写0:当 T2MSEL.T2MSEL = 000 读 T2M0, T2M1,T2MSEL.T2MOVFSEL=000。 读 T2MOVF0, T2MOVF1 T2MOVF2。 1:当 T2MSEL.T2MSEL = 000 读 T2M0, T2M1,T2MOVF0 , T2MOVF1, aT2MOVF2 2 STATE 0 0 计数器空闲模式,1 计数器正常运行。读 1 SYNC 1 读/写同步使能 0:T2 立即起、停。 1:T2 起、停和 32.768kHz 时钟及计数新值 同步 0 RUN 0 读/写启动 T2,通过读出该位可以知道 T2 的状 态。 0:停止 T2(IDLE),1:启动 T2(RUN) T2MOVF2 (T2 多路复用溢出计数器 2 寄存器) 位号位名复位值操作性功能描述 CMPIM 0 7:0读/写T2MSEL.T2MOVFSEL=000, T2CTRL.LATCH_MODE =0 时,计数值被 锁存。 T2M0 ((T2 多路复用寄存器) 位号位名复位值操作性功能描述 7:0 CMPIM 0 读/写T2MSEL.T2MSEL=000 和 T2CTRL.LATCH_MODE=0 时,计数值被锁存。 T2MSEL.T2MSEL=000 和 T2CTRL.LATCH_MODE=1 时,计数值和溢出值 被锁存。 T2IRQF(中断标志) 位号位名复位值操作性功能描述 - 0 7:6读保留 5 TIMER2_OVF_COMPARE2F 0 读/写当溢出计数器计数达到 t2ovf_cmp2 的值时置位 4 TIMER2_OVF_COMPARE1F 0 读/写当溢出计数器计数达到 t2ovf_cmp1 的值时置位 3 TIMER2_OVF_PERF 0 读/写当溢出计数器计数等于 t2ovf_per 的值时置位 2 TIMER2_COMPARE2F 0 读/写当计数器计数达到 t2_cmp2 的值 时置位 1 TIMER2_COMPARE1F 0 读/写当计数器计数达到 t2_cmp1 的值 时置位 0 TIMER2_PERF 0 读/写当计数器计数等于 t2_per 的值 时置位 T2IRQM(中断屏蔽) 位号位名复位值操作性功能描述 - 0 7:6读保留 5 TIMER2_OVF_COMPARE2MF 0 TIMER2_OVF_COMPARE2M 读/写 中断使能 4 TIMER2_OVF_COMPARE1M 0 TIMER2_OVF_COMPARE1M 读/写 中断使能 3 TIMER2_OVF_PERM 0 读/写TIMER2_OVF_PERM 中断使 能 2 TIMER2_COMPARE2M 0 读/写TIMER2_COMPARE2M 中断 使能 1 TIMER2_COMPARE1M 0 读/写TIMER2_COMPARE1M 中断 使能 0 TIMER2_PERM 0 读/写TIMER2_PERM 中断使能 实验相关函数 void Delay(uint n);参见 CC2530 基础实验 1。 void Initial(void);函数原型: void Initial(void) { LED_ENALBLE(); //启用 LED //用 T2 来做实验 SET_TIMER2_OF_INT(); //开溢出中断 SET_TIMER2_CAP_COUNTER(0X00ff); //设置溢出值 } 函数功能是启用 LED,使用 LED 可控,开 T2 比较中断 重要的宏定义 开启溢出中断 #define SET_TIMER2_CAP_INT() \ do{ \ T2IRQM = 0x04; \ EA = 1; \ T2IE = 1; \ T2MSEL |= 0xf4; \ }while(0) 设定溢出周期 #define SET_TIMER2_CAP_COUNTER(val) SET_WORD(T2M1,T2M0,val) 功能:将无符号整形数 val 的高 8 位写入 T2CAPLPL,低 8 位写入 T2CAPHPH。 启动 T2 #define TIMER2_RUN() T2CTRL|=0X01 停止 T2 #define TIMER2_STOP() do{T2CTRL&=0XFE;}while(0) 1.2.3CC2530 基础实验 6:T3 使用 实验介绍 用定时器 3 来改变小灯的状态,T3 每发生 200 次中断小灯改变状态一次。 实验相关寄存器 实验中操作了的寄存器有 P1,P1SEL,P1DIR,T3CTL,T3CCTL0,T3CC0,T3CCTL1,T3CC1, 等寄存器。 P1 参见 CC2530 实验 1 见 CC2530 实验 1 P1SEL 参 P1DIR 参见 CC2530 实验 1 T3CTL(T3 控制寄存器) 位号位名复位值操作性功能描述7:5 DIV[2:0] 000 读/写定时器时钟再分频数(对 CLKCONCMD.TICKSPD 分频后再次分频) 000:不再分频 001:2 分频 010:4 分频 011:8 分频 100:16 分频 101:32 分频 110:64 分频 111:128 分频 4 START 0 读/写T3 起停位 0 暂停计数,1 正常运行 3 OVFIM 1 读/写溢出中断掩码 0 关溢出中断,1 开溢出中断 2 CLR 0 读/写清计数值,写 1 使 T3CNT=0x001:0 MODE[1:0] 00 读/写T3 模式选择 00:自动重装 01:DOWN (从 T3CC0 到 0x00 计数一次) 10:模计数 (反复从 0x00 到 T3CC0 计数) 11:UP/DOWN(反复从 0x00 到 T3CC0 再到 0x00) T3CCTL0 (T3 通道 0 捕获/比较控制寄存器) 位号位名复位值操作性功能描述 7 0 ,读预留 6 IM 1 读/写通道 0 中断掩码 0 关中断,1 开中断 5:3 CMP[7:0] 000 读/写通道 0 比较输出模式选择,指定计数值过 T3CC0 时 的发生事件 000 输出置 1(发生比较时),001 输出清 0(发生比 较时),010 输出翻转, 011 输出置 1(发生上比较时)输出清 0(计数值为 0 或 UP/DOWN 模式下发生下比较), 100 输出清 0(发生上比较时)输出置 1(计数值为 0 或 UP/DOWN 模式下发生下比较), 101 输出置 1(发生比较时)输出清 0(计数值为 0xff 时), 110 输出清 0(发生比较时)输出置 1(计数值为 0x00 时),111 预留。 2 MODE- 0 读/写T3 通道 0 模式选择 0 捕获,1 比较 1:0 CAP 00 读/写T3 通道 0 捕获模式选择 00 没有捕获 01 上升沿捕获 10 下降沿捕获 11 边沿捕获 T3CC0 (T3 通道 0 捕获/比较值寄存器) 位号位名复位值操作性功能描述7:0 VAL[7:0] 0x00 读/写T3 通道 0 比较/捕获值 T3CCTL1 (T3 通道 1 捕获/比较控制寄存器) 位号位名复位值操作性功能描述 7 0 ,读预留 6 IM 1 读/写通道 1 中断掩码 0 关中断,1 开中断 5:3 CMP[7:0] 0 读/写通道 1 比较输出模式选择,指定计数值 过 T3CC0 时的发生事件 000 输出置 1(发生比较时) 001 输出清 0(发生比较时) 010 输出翻转 011 输出置 1(发生上比较时)输出清 0 (计数值为 0 或 UP/DOWN 模式下发生 下比较) 100 输出清 0(发生上比较时)输出置 1 (计数值为 0 或 UP/DOWN 模式下发生 下比较) 101 输出置 1(发生比较时)输出清 0 (计数值为 0xff 时) 110 输出清 0(发生比较时)输出置 1(计 数值为 0x00 时) 111 预留 2 MODE- 0 读/写T3 通道 1 模式选择 0 捕获,1 比较 1:0 CAP 0000 读/写T3 通道 1 捕获模式选择 00 没有捕获 01 上升沿捕获 10 下降沿捕获 11 边沿捕获 T3CC1 (T3 通道 1 捕获/比较值寄存器) 位号位名复位值操作性功能描述7:0 VAL[7:0] 0x00 读/写T3 通道 1 比较/捕获值 实验相关函数 void Init_T3_AND_LED(void);函数原型: void Init_T3_AND_LED(void) { P1DIR = 0X03; RLED = 1; YLED = 1; TIMER34_INIT(3); //初始化 T3 TIMER34_ENABLE_OVERFLOW_INT(3,1); //开 T3 中断 //时钟 32 分频 101 TIMER3_SET_CLOCK_DIVIDE(16); TIMER3_SET_MODE(T3_MODE_FREE); //自动重装 00,>0xff TIMER3_START(1); //启动 }; 函数功能:将 I/0 P10,P11 设置为输出去控制 LED,将 T3 设置为自动重装模式,定时器时钟 16 分频,并启动 T3。 void T3_ISR(void);函数原型: #pragma vector = T3_VECTOR interrupt void T3_ISR(void) { //IRCON = 0x00; //清中断标志,硬件自动完成 if(counter<200)counter++; //10 次中断 LED 闪烁一轮 else { counter = 0; //计数清零 RLED = !RLED; //改变小灯的状态 } } 函数功能:这是一个中断服务程序,每 200 次中断改变一次红色 LED 的状态。 重要的宏定义 开 启溢出中断 #define TIMER34_ENABLE_OVERFLOW_INT(timer,val) \ do{T##timer##CTL = (val) ? T##timer##CTL | 0x08 : T##timer##CTL & ~0x08; \ EA = 1; \ T3IE = 1; \ }while(0) 功能:打开 T3 的溢出中断。 复位 T3 相关寄存器 #define TIMER34_INIT(timer) \ do { \ T##timer##CTL = 0x06; \ //比较模式 T##timer##CCTL0 = 0x00; \ T##timer##CC0 = 0x00; \ T##timer##CCTL1 = 0x00; \ T##timer##CC1 = 0x00; \ } while (0) 功能:将 T3 相关的寄存器复位到 0 控制 T3 起停 #define TIMER3_START(val) \ (T3CTL = (val) ? T3CTL | 0X10 : T3CTL&~0X10) 功能:val 为 1,T3 正常运行,val 为 0,T3 停止计数 设置 T3 工作方式 #define TIMER3_SET_MODE(val) \ do{ \ T3CTL &= ~0X03; \ (val==1)?(T3CTL|=0X01): /*DOWN */ \ (val==2)?(T3CTL|=0X02): /*Modulo */ \ (val==3)?(T3CTL|=0X03): /*UP / DOWN */ \ (T3CTL|=0X00); /*free runing */ \ }while(0) #define T3_MODE_FREE 0X00 #define T3_MODE_DOWN 0X01 #define T3_MODE_MODULO 0X02 #define T3_MODE_UP_DOWN 0X03 功能:根据 val 的值将 T3 设置为不同模式,一共 4 种模式。 1.2.4CC2530 基础实验 7:T4 使用 实验介绍 用定时器 4 来改变小灯的状态,T4 每发生 200 次中断小灯改变状态一次。 实验相关寄存器 实验中操作了的寄存器有 P1,P1SEL,P1DIR,T4CTL,T4CCTL0,T4CC0,T4CCTL1,T4CC1 等寄存器。 P1 参见 CC2530 实验 1。 P1SEL 参见 CC2530 实验 1。 P1DIR 参见 CC2530 实验 1。 T4CTL(T4 控制寄存器) 位号位名复位值操作性功能描述 7:5 DIV[2:0] 000 读/写定 时 器 时 钟 再 分 频 数 ( 对 CLKCONCMD.TICKSPD 分频后再次分频) 000 不再分频 001 2 分频 010 4 分频 011 8 分频 100 16 分频 101 32 分频 110 64 分频 111 128 分频 4 START 0 读/写T4 起停位 0 暂停计数,1 正常运行 3 OVFIM 1 读/写 0溢出中断掩码 0 关溢出中断,1 开溢出中断 2 CLR 0 R0/W1 清计数值,写 1 使 T4CNT=0x001:0 MODE[1:0] 00 读/写T4 模式选择 00 自动重装 01 DOWN (从 T4CC0 到 0x00 计数一次) 10 模计数 (反复从 0x00 到 T4CC0 计数) 11 UP/DOWN(反复从 0x00 到 T4CC0 再到 0x00) T4CCTL0 (T4 通道 0 捕获/比较控制寄存器) 位号位名复位值操作性功能描述 7 0 ,读预留 6 IM 1 读/写通道 0 中断掩码 0 关中断,1 开中断 5:3 CMP[7:0] 000 读/写通道 0 比较输出模式选择,指定计数值过 T4CC0 时的发生事件 000 输出置 1(发生比较时) 001 输出清 0(发生比较时) 010 输出翻转 011 输出置 1(发生上比较时)输出清 0(计 数值为 0 或 UP/DOWN 模式下发生下比较) 100 输出清 0(发生上比较时)输出置 1(计 数值为 0 或 UP/DOWN 模式下发生下比较) 101 输出置 1(发生比较时)输出清 0(计 数值为 0xff 时) 110 输出清 0(发生比较时)输出置 1(计 数值为 0x00 时) 111 预留 2 MODE- 0 读/写T4 通道 0 模式选择 0 捕获,1 比较 1:0 CAP 00 读/写T4 通道 0 捕获模式选择 00 没有捕获 01 上升沿捕获 10 下降沿捕获 11 边沿捕获 T4CC0 (T4 通道 0 捕获/比较值寄存器) 位号位名复位值操作性功能描述7:0 VAL[7:0] 0x00 读/写T4 通道 0 比较/捕获值 T4CCTL1 (T4 通道 1 捕获/比较控制寄存器) 位号位名复位值操作性功能描述 7 0 ,读预留 6 IM 1 读/写通道 1 中断掩码 0 关中断,1 开中断 5:3 CMP[7:0] 0 读/写通道 1 比较输出模式选择,指定计数值过 T4CC0 时的发生事件 000 输出置 1(发生比较时) 001 输出清 0(发生比较时) 010 输出翻转 011 输出置 1(发生上比较时)输出清 0 (计数值为 0 或 UP/DOWN 模式下发生下 比较) 100 输出清 0(发生上比较时)输出置 1 (计数值为 0 或 UP/DOWN 模式下发生下 比较) 101 输出置 1(发生比较时)输出清 0(计 数值为 0xff 时) 110 输出清 0(发生比较时)输出置 1(计 数值为 0x00 时) 111 预留 2 MODE- 0 读/写T4 通道 1 模式选择 0 捕获,1 比较 1:0 CAP 0000 读/写T4 通道 1 捕获模式选择 00 没有捕获 01 上升沿捕获 10 下降沿捕获 11 边沿捕获 T4CC1 (T4 通道 1 捕获/比较值寄存器) 位号位名复位值操作性功能描述7:0 VAL[7:0] 0x00 读/写T4 通道 1 比较/捕获值 实验相关函数 void Init_T4_AND_LED(void)函数原型: void Init_T4_AND_LED(void) { P1DIR = 0X03; led1 = 1; led2 = 1; TIMER34_INIT(4); //初始化 T4 TIMER34_ENABLE_OVERFLOW_INT(4,1); //开 T4 中断 TIMER34_SET_CLOCK_DIVIDE(4,128); TIMER34_SET_MODE(4,0); //自动重装 00,>0xff TIMER34_START(4,1); //启动 }; 函数功能:将 I/0 P10,P11 设置为输出去控制 LED,将 T4 设置为自动重装模式,定时器时钟 16 分频,并启动 T4。 void T4_ISR(void);函数原型: #pragma vector = T4_VECTOR interrupt void T4_ISR(void) { //IRCON = 0x00; //清中断标志,硬件自动完成 if(counter<200)counter++; //10 次中断 LED 闪烁一轮 else { counter = 0; //计数清零 RLED = !RLED; //改变小灯的状态 } } 函数功能:这是一个中断服务程序,每 200 次中断改变一次红色 LED 的状态。 重要的宏定义 开启溢出中断 #define TIMER34_ENABLE_OVERFLOW_INT(timer,val) \ do{T##timer##CTL = (val) ? T##timer##CTL | 0x08 : T##timer##CTL & ~0x08; \ EA = 1; \ T4IE = 1; \ }while(0) 功能:打开 T4 的溢出中断。 复位 T4 相关寄存器 #define TIMER34_INIT(timer) \ do { \ T##timer##CTL = 0x06; \ T##timer##CCTL0 = 0x00; \ T##timer##CC0 = 0x00; \ T##timer##CCTL1 = 0x00; \ T##timer##CC1 = 0x00; \ } while (0) 功能:将 T4 相关的寄存器复位到 0 控制 T4 起停 #define TIMER#define TIMER34_START(timer,val) \ (T##timer##CTL = (val) ? T##timer##CTL | 0X10 : T##timer##CTL&~0X10) 功能:timer 为定时器序号,只能取 3 或 4。val 为 1,定时器正常运行,val 为 0,定时器停止 计数 设置 T4 工作方式 #define TIMER3_SET_MODE(val) \ do{ \ T4CTL &= ~0X03; \ (val==1)?(T4CTL|=0X01): /*DOWN */ \ (val==2)?(T4CTL|=0X02): /*Modulo */ \ (val==3)?(T4CTL|=0X03): /*UP / DOWN */ \ (T4CTL|=0X00); /*free runing */ \ }while(0) #define T4_MODE_FREE 0X00 #define T4_MODE_DOWN 0X01 #define T4_MODE_MODULO 0X02 #define T4_MODE_UP_DOWN 0X03 功能:根据 val 的值将 T4 设置为不同模式,一共 4 种模式。 1.3 中断实验 1.3.1CC2530 基础实验 8:定时器中断 实验介绍 用定时器 4 来改变小灯的状态,T4 每 2000 次中断小灯闪烁一轮,闪烁的时间长度为 1000 次 中断所耗时间。 实验相关寄存器 实验中操作了的寄存器有 P1,P1SEL,P1DIR,T4CTL,T4CCTL0,T4CC0,T4CCTL1,T4CC1, IEN0,IEN1 等寄存器。 CC2530 实验 1 P1 参见 P1SEL 参见 CC2530 实验 1 P1DIR 参见 CC2530 实验 1 T4CTL 参见 CC2530 实验 7 T4CCTL0 参见 CC2530 实验 7 T4CC0 参见 CC2530 实验 7 T4CCTL1 参见 CC2530 实验 7 T4CC1 参见 CC2530 实验 7 实验相关函数 void Init_T4_AND_LED(void);函数原型: void Init_T4_AND_LED(void) { P1DIR = 0X03; led1 = 1; led2 = 1; TIMER34_INIT(4); //初始化 T4 TIMER34_ENABLE_OVERFLOW_INT(4,1); //开 T4 中断 TIMER34_SET_CLOCK_DIVIDE(4,128); TIMER34_SET_MODE(4,0); //自动重装 00,>0xff TIMER34_START(4,1); //启动 }; 函数功能:将 I/0 P10,P11 设置为输出去控制 LED,将 T4 设置为自动重装模式,定时器时钟 16 分频,并启动 T4。 void T4_ISR(void);函数原型: #pragma vector = T4_VECTOR interrupt void T4_ISR(void) { IRCON = 0x00; //可不清中断标志,硬件自动完成 if(counter<1000)counter++; //1000 次中断 LED 闪烁一轮 else { counter = 0; //计数清零 GlintFlag = !GlintFlag; //GlintFalg = 1,LED 闪烁 } } 函数功能:这是一个中断服务程序,每 1000 次中断改变一次红色 LED 的状态。 重要的宏定义 开启溢出中断 #define TIMER34_ENABLE_OVERFLOW_INT(timer,val) \ do{T##timer##CTL = (val) ? T##timer##CTL | 0x08 : T##timer##CTL & ~0x08; \ EA = 1; \ T4IE = 1; \ }while(0) 功能:打开 T4 的溢出中断。 复位 T4 相关寄存器 #define TIMER34_INIT(timer) \ do { \ T##timer##CTL = 0x06; \ T##timer##CCTL0 = 0x00; \ T##timer##CC0 = 0x00; \ T##timer##CCTL1 = 0x00; \ T##timer##CC1 = 0x00; \ } while (0) 功能:将 T4 相关的寄存器复位到 0 控制 T4 起停 #define TIMER#define TIMER34_START(timer,val) \ (T##timer##CTL = (val) ? T##timer##CTL | 0X10 : T##timer##CTL&~0X10) 功能:timer 为定时器序号,只能取 3 或 4。val 为 1,定时器正常运行,val 为 0,定时器停止 计数。 设置 T4 工作方式 #define TIMER3_SET_MODE(val) \ do{ \ T4CTL &= ~0X03; \ (val==1)?(T4CTL|=0X01): /*DOWN */ \ (val==2)?(T4CTL|=0X02): /*Modulo */ \ (val==3)?(T4CTL|=0X03): /*UP / DOWN */ \ (T4CTL|=0X00); /*free runing */ \ }while(0) #define T4_MODE_FREE 0X00 #define T4_MODE_DOWN 0X01 #define T4_MODE_MODULO 0X02 #define T4_MODE_UP_DOWN 0X03 功能:根据 val 的值将 T4 设置为不同模式,一共 4 种模式。 1.3.2CC2530 基础实验 9:外部中断 实验介绍 使用两个按键来翻转LED的状态,但这里两个按键不是做键盘用,而是产生中断触发信 号。。 按下液晶扩展板上“OK”键S6,CC2530 模块上1个LED 灯改变当前状态。 实验相关寄存器 实验中操作了的寄存器有 P0,P0SEL,P0DIR,P0INP,P0IEN,P0CTL,IEN2,P0IFG 等寄 存器。 P1 参见 1.1.1 P1SEL 参见 1.1.1 P1DIR 参见 1.1.1 P1INP 参见 1.1.1 P0IEN (P01 口中断掩码) 位号位名复位值可操作性功能描述 P0_7IEN 7 0 读/写P07 中断掩码 0 关中断,1 开中断 P0_6IEN 6 0 读/写P06 中断掩码 0 关中断,1 开中断 P0_5IEN 5 0 读/写P05 中断掩码 0 关中断,1 开中断 P0_4IEN 4 0 读/写P04 中断掩码 0 关中断,1 开中断 P0_3IEN 3 0 读/写P03 中断掩码 0 关中断,1 开中断 P0_2IEN 2 0 读/写P02 中断掩码 0 关中断,1 开中断 P0_1IEN 1 0 读/写P01 中断掩码 0 关中断,1 开中断 P0_0IEN 0 0 读/写P00 中断掩码 0 关中断,1 开中断 PICTL (P 口中断控制寄存器) 位号位名复位值可操作性功能描述 7 0 ,读预留 6 PADSC 0 读/写输出驱动能力选择 0 最小驱动能力,1 最大驱动能力 5 P2IEN 0 读/写P2(0-4)中断使能位 0 关中断,1 开中断 4 P0IENH 0 读/写P0(4-7)中断使能位 0 关中断,1 开中断 3 P0IENL 0 读/写P0(0-3)中断使能位 0 关中断,1 开中断 2 P2ICON 0 读/写P2 (0-4)中断配置 0 上升沿触发,1 下降沿触发 1 P1ICON 0 读/写P1 (0-7)中断配置 0 上升沿触发,1 下降沿触发 0 P0ICON 0 读/写P0 (0-7)中断配置 0 上升沿触发,1 下降沿触发 P0IFG(P0 口中断标志寄存器) 位号位名复位值可操作性功能描述 P0IF[7:0] 0x00 7:0读/写P0(0-7)中断标志位,在中断条件发生, 相应位自动置 1 IEN2 (中断使能寄存器 2) 位号位名复位值可操作性功能描述 7:6 00 没有,读出为 0,读 5 WDTIE 0 读/写看门狗定时器中断使能 0 关中断,1 开中断 4 P1IE 0 读/写P1 中断使能使能 0 关中断,1 开中断3 UTX1IE 0 读/写串口 1 发送中断使能 0 关中断,1 开中断 2 UTX0IE 0 读/写串口 0 发送中断使能 0 关中断,1 开中断 1 P2IE 0 读/写P2 口中断使能 0 关中断,1 开中断 0 RFIE 0 读/写普通射频中断使能 0 关中断,1 开中断 实验相关函数 void Init_IO_AND_LED(void);函数原型: void Init_IO_AND_LED(void) { P1DIR = 0X03; //0 为输入(默认),1 为输入 RLED = 1; led2 = 1; P0INP &= ~0X0c;//有上拉、下拉 P1INP &= ~0X40; //选择上拉 P0IEN |= 0X30; //P04 P03 PICTL |= 0X02; //下降沿 EA = 1; IEN1 |= 0X20; // P0IE = 1; P0IFG |= 0x00; //P12 P13 中断标志清 0 } 函数功能:将 I/0 P04,P03 设置为输出去控制 LED,使能 P0 中断 且配置为下降沿触发。 void P1_ISR(void);函数原型: #pragma vector = P0INT_VECTOR interrupt void P0_ISR(void) { if(P0IFG>0) //按键中断 { P0IFG = 0; RLED = !RLED; } P0IF = 0; //清中断标志 } 函数功能:在 P04,P03 触发中断的时候将绿色 LED 的状态翻转。 1.4AD 实验 1.4.1CC2530 基础实验 10:片内温度 实验介绍 取片内温度传感器为 AD 源,并将转换得到温度通过串口送至电脑。 实验相关寄存器 实验中操作了的寄存器有 CLKCONCMD,SLEEPCMD,PERCFG,U0CSR,U0GCR,U0BAUD, CLKCONSTA,IEN0,U0DUB,ADCCON1,ADCCON3,ADCH,ADCL 等寄存器。 IEN0 参见实验 5。 CLKCONCMD (时钟控制寄存器) 位号位名复位值可操作性功能描述 7 OSC32K 1 32kHz 时钟源选择写 0:32K 晶振,1:32K RC 振荡 6 OSC 1 写主时钟源选择 0:32M 晶振,1:16M RC 振荡 5:3 TICKSPD[2:0] 001 写定时器计数时钟分频(该时钟频不大于 OSC 决定频率) 000 32M 001 16M 010 8M 011 4M 100 2M 101 1M 110 0.5M 111 0.25M 2:0 CLKSPD 001 写时钟速率,不能高于系统时钟 000: 32 MHz 001: 16 MHz 010: 8 MHz 011: 4 MHz 100: 2 MHz 101: 1 MHz 110: 500 kH 111: 250 kH CLKCONSTA (时钟状态寄存器) 位号位名复位值可操作性功能描述 7 OSC32K 1 32kHz 时钟源选择读 0:32K 晶振,1:32K RC 振荡 6 OSC 1 读主时钟源选择 0:32M 晶振,1:16M RC 振荡 5:3 TICKSPD[2:0] 001 定时器计数时钟分频(该时钟频不大于 OSC读 决定频率) 000 32M 001 16M 010 8M 011 4M 100 2M 101 1M 110 0.5M 111 0.25M 2:0 CLKSPD 001 读时钟速率,不能高于系统时钟 000: 32 MHz 001: 16 MHz 010: 8 MHz 011: 4 MHz 100: 2 MHz 101: 1 MHz 110: 500 kH 111: 250 kH SLEEPCMD (睡眠模式控制寄存器) 位号位名复位值可操作性功能描述 7 0 ,读预留 6 XOSC_STB 0 写低速时钟状态 0 没有打开或者不稳定 1 打开且稳定 5 HFRC_STB 0 写主时钟状态 0 没有打开或者不稳定 1 打开且稳定 4:3 RST[1:0] XX 写最后一次复位指示 00 上电复位 01 外部复位 10 看门狗复位 2 OSC_PD 0 节能控制,OSC 状态改变的时候硬件清写 0。 0 不关闭无用时钟 1 关闭无用时钟 1:0 MODE[1:0] 0 写功能模式选择 00 PM0 01 PM1 10 PM2 11 PM3 PERCFG(外设控制寄存器) 位号位名复位值可操作性功能描述 7 0 ,读预留 6 T1CFG 0 读/写T1 I/O 位置选择 0 位置 1,1 位置 2 5 T3CFG 0 读/写T3 I/O 位置选择 0 位置 1,1 位置 24 T4CFG 0 读/写T4 I/O 位置选择 0 位置 1,1 位置 2 3:2 00 R0 ,预留 1 U1CFG 0 读/写串口 1 位置选择 0 位置 1,1 位置 2 0 U0CFG 0 读/写串口 0 位置选择 0 位置 1,1 位置 2 U0CSR(串口 0 控制&状态寄存器) 位号位名复位值可操作性功能描述 7 MODE 0 读/写串口模式选择 0 SPI 模式,1 UART 模式 6 RE 0 读/写接收使能 0 关闭接收,1 允许接收 5 SLAVE 0 读/写SPI 主从选择 0 SPI 主,1 SPI 从 4 FE 0 读/写串口帧错误状态 0 没有帧错误,1 出现帧错误 3 ERR 0 读/写串口校验结果 0 没有校验错误,1 字节校验出错 2 RX_BYTE 0 读/写接收状态 0 没有接收到数据,1 接收到一字节数 据 1 TX_BYTE 0 读/写发送状态 0 没有发送,1 最后一次写入 U0BUF 的数据已经发送 0 ACTIVE 0 读串口忙标志 0 串口闲,1 串口忙 U0GCR (串口 0 常规控制寄存器) 位号位名复位值可操作性功能描述7 CPOL 0 读/写SPI 时钟极性 0 低电平空闲,1 高电平空闲 6 CPHA 0 读/写SPI 时钟相位 0 由 CPOL 跳向非 CPOL 时采样,由非 CPOL 跳向 CPOL 时输出 1 由非 CPOL 跳向 CPOL 时采样,由 CPOL 跳向非 CPOL 时输出 5 ORDER 0 读/写传输位序 0 低位在先,1 高位在先 4:0 BAUD_E[4:0] 0x00 读/写波特率指数值,BAUD_M 决定波特率 U0BAUD (串口 0 波特率控制寄存器) 位号位名复位值可操作性功能描述7:0 BAUD_M[7:0] 0X00 读/写波特率尾数,与 BAUD_E 决定波特率 U0BUF(串口 0 收发缓冲器) 位号位名复位值可操作性功能描述7:0 DATA[7:0] 0X00 读/写UART0 收发寄存器 ADCCON1 位号位名复位值可操作性功能描述7 EOC 0 读/写ADC 结束标志位 0 ADC 进行中,1 ADC 转换结束 6 ST 0 读/写手动启动 AD 转换(读 1 表示当前正 在进行 AD 转换) 0 没有转换, 1 启动 AD 转换 (STSEL=11) 5:4 STSEL[1:0] 11 读/写AD 转换启动方式选择 00 外部触发 01 全速转换,不需要触发 10 T1 通道 0 比较触发 11 手工触发 3:2 RCTRL[1:0] 00 读/写16 位随机数发生器控制位(写 01,10 会在执行后返回 00) 00 普通模式(13x 打开) 01 开启 LFSR 时钟一次 10 生成调节器种子 11 信用随机数发生器 1:0 - 11 读/写保留,总是写设置为 1 ADCCON3 位号位名复位值可操作性功能描述 选择单次 AD 转换参考电压读/写 7:6 SREF[1:0] 00 00 内部 1.25V 电压 01 外部参考电压 AIN7 输入 10 模拟电源电压 11 外部参考电压 AIN6-AIN7 输入 选择单次 A/D 转换分辨率 00 8 位 (64dec) 01 10 位 (128dec) 读/写 5:4 SDIV[1:0] 01 10 12 位 (256dec) 11 14 位 (512dec) 单次 A/D 转换选择,如果写入时 ADC 正在运行,则在完成序列 A/D 转换后 读/写 3:0 SCH[3:0] 00 立刻开始,否则写入后立即开始 A/D 转换,转换完成后自动清 0 0000 AIN0 0001 AIN1 0010 AIN2 0011 AIN3 0100 AIN4 0101 AIN5 0110 AIN6 0111 AIN7 1000 AIN0- AIN1 1001 AIN2- AIN3 1010 AIN4- AIN5 1011 AIN6- AIN7 1100 GND 1101 正电源参考电压 1110 温度传感器 1111 1/3 模拟电压 实验相关函数 void Delay(uint n);定性延时,参见实验 1 void initUARTtest(void);函数原型: void initUARTtest(void) { CLKCONCMD &= ~0x40; //晶振 while(!(SLEEPSTA & 0x40)); //等待晶振稳定 CLKCONCMD &= ~0x47; //TICHSPD128 分频,CLKSPD 不分频 SLEEPCMD |= 0x04; //关闭不用的 RC 振荡器 PERCFG = 0x00; //位置 1 P0 口 P0SEL = 0x3c; //P0 用作串口 U0CSR |= 0x80; //UART 方式 U0GCR |= 10; //baud_e = 10; U0BAUD |= 216; //波特率设为 57600 UTX0IF = 1; U0CSR |= 0X40; //允许接收 IEN0 |= 0x84; //开总中断,接收中断 } 函数功能: 将系统时钟设为高速晶振,将 P0 口设置为串口 0 功能引脚,串口 0 使用 UART 模式,波特率设为 57600,允许接收。在使用串口之前调用。 void UartTX_Send_String(char *Data,int len)函数原型: void UartTX_Send_String(char *Data,int len) { int j; for(j=0;j> 2; value |= (((UINT16)ADCH) << 6); accValue += value; } value = accValue >> 2; // devide by 4 return ADC14_TO_CELSIUS(value); } 函数功能:连续进行 4 次 AD 转换,将得到的结果求均值后将 AD 结果转换为温度返回。重要的宏定义 将片内温度传感器 AD 转换的结果转换成温度。 #define ADC14_TO_CELSIUS(ADC_VALUE) ( ((ADC_VALUE) >> 4) - 315) 1.4.2CC2530 基础实验 11:1/3AVDD 实验介绍 将 AD 的源设为 1/3 电源电压,并将转换得到温度通过串口送至电脑。 实验相关寄存器 实验中操作了的寄存器有 CLKCONCMD,SLEEPCMD,PERCFG,U0CSR,U0GCR,U0BAUD, IEN0,U0DUB,ADCCON1,ADCCON3,ADCH,ADCL 等寄存器。 CLKCONCMD 参见实验 10 SLEEPCMD 参见实验 10 PERCFG 参见实验 10 U0CSR 参见实验 10 U0GCR 参见实验 10 U0BAUD 参见实验 10 U0BUF 参见实验 10 ADCCON1 参见实验 10 ADCCON3 参见实验 10 IEN0 参见实验 5 实验相关函数 void Delay(uint n);定性延时,参见实验 1 void initUARTtest(void);参见实验 10 void UartTX_Send_String(char *Data,int len);参见实验 10 void InitialAD(void);函数原型: void InitialAD(void) { //P1 out P1DIR = 0x03; //P1 控制 LED led1 = 1; led2 = 1; //关 LED ADCH &= 0X00; //清 EOC 标志 ADCCON3=0xbf; //单次转换,参考电压为电源电压,对 1/3 AVDD 进行 A/D 转换 //14 位分辨率 ADCCON1 = 0X30; //停止 A/D ADCCON1 |= 0X40; //启动 A/D; } 函数功能:将 AD 转换源设为电源电压,ADC 结果分辨率设为 14 位(最高精度),AD 模式为单次转换,启动 ADC 转换。 1.4.3CC2530 基础实验 12:AVDD 实验介绍 将 AD 的源设为电源电压,AD 参考电压为 AVDD,并将转换得到温度通过串口送至电脑。 实验相关寄存器 实验中操作了的寄存器有 CLKCONCMD,SLEEPCMD,PERCFG,U0CSR,U0GCR,U0BAUD, IEN0,U0DUB,ADCCON1,ADCCON3,ADCH,ADCL 等寄存器。 CLKCONCMD 参见实验 10 SLEEPCMD 参见实验 10 PERCFG 参见实验 10 U0CSR 参见实验 10 U0GCR 参见实验 10 U0BAUD 参见实验 10 U0BUF 参见实验 10 ADCCON1 参见实验 10 ADCCON3 参见实验 10 IEN0 参见实验 5 实验相关函数 void Delay(uint n);定性延时,参见实验 1 void initUARTtest(void);参见实验 10 void UartTX_Send_String(char *Data,int len);参见实验 10 void InitialAD(void);函数原型: void InitialAD(void) { //P1 out P1DIR = 0x03; //P1 控制 LED led1 = 1; led2 = 1; //关 LED ADCH &= 0X00; //清 EOC 标志 ADCCON3=0xb7; //单次转换,参考电压为电源电压,对 AVDD 进行 A/D 转换 //14 位分辨率 ADCCON1 = 0X30; //停止 A/D ADCCON1 |= 0X40; //启动 A/D } 函数功能:设 P10,P11 设为输出控制 LED 灯,将 AD 转换源设为电源电压,参考电压为电源 电压,ADC 结果分辨率设为 14 位(最高精度),AD 模式为单次转换,启动 ADC 转换。 1.5UART 串口 1.5.1CC2530 基础实验 13:单片机串口发数 实验介绍 从 CC2530 上通过串口不断地发送字串“UART0 TX Test”。实验使用 CC2530 的串口 1,波特 率为 57600。 实验相关寄存器 实验中操作了的寄存器有:P1,P1DIR,CLKCONCMD,SLEEPCMD, U0CSR, PERCFG, U0GCR,U0BAUD,IEN0,U0DUB 等寄存器。 CLKCONCMD 参见实验 10 SLEEPCMD 参见实验 10 PERCFG 参见实验 10 U0CSR 参见实验 10 U0GCR 参见实验 10 U0BAUD 参见实验 10 U0BUF 参见实验 10 IEN0 参见实验 5 实验相关函数 void Delay(uint n);定性延时,参见实验 1 void initUARTtest(void);函数原型: void initUARTtest(void) { CLKCONCMD &= ~0x40; //晶振 while(!(SLEEPSTA & 0x40)); //等待晶振稳定 CLKCONCMD &= ~0x47; //TICHSPD128 分频,CLKSPD 不分频 SLEEPCMD |= 0x04; //关闭不用的 RC 振荡器 PERCFG = 0x00; //位置 1 P0 口 P0SEL = 0x3c; //P0 用作串口 P2DIR &= ~0XC0; //P0 优先作为串口 0 U0CSR |= 0x80; //UART 方式 U0GCR |= 10; //baud_e U0BAUD |= 216; //波特率设为 57600 UTX0IF = 0; } 函数功能:初始化串口 0,将 I/O 映射到 P0 口,P0 优先作为串口 0 使用,UART 工作方式, 波特率为 57600。使用晶振作为系统时钟源。 void UartTX_Send_String(char *Data,int len)函数原型: void UartTX_Send_String(char *Data,int len) { int j; for(j=0;j格式
为“灯 编号开,关#”,LED1,LED 2,0 是关灯,1 是开灯,如打开LED2的命令是“21#” 实验相关寄存器 实验中操作了的寄存器有:P1,P1DIR,P1SEL,CLKCONCMD,SLEEPCMD,PERCFG, U0CSR,U0GCR,U0BAUD,IEN0,U0DUB 等寄存器。P1 参见实验 1 P1DIR 参见实验 1 P1SEL 参见实验 1 CLKCONCMD 参见实验 10 SLEEPCMD 参见实验 10 PERCFG 参见实验 10 U0CSR 参见实验 10 U0GCR 参见实验 10 U0BAUD 参见实验 10 U0BUF 参见实验 10 实验相关函数 void Delay(uint n);定性延时,参见实验 1 void initUARTtest(void);函数原型: void initUARTtest(void) { CLKCONCMD &= ~0x40; //晶振 while(!(SLEEPSTA & 0x40)); //等待晶振稳定 CLKCONCMD &= ~0x47; //TICHSPD128 分频,CLKSPD 不分频 SLEEPCMD |= 0x04; //关闭不用的 RC 振荡器 PERCFG = 0x00; //位置 1 P0 口 P0SEL = 0x3c; //P0 用作串口 P2DIR &= ~0XC0; //P0 优先作为串口 0 U0CSR |= 0x80; //UART 方式 U0GCR |= 10; //baud_e U0BAUD |= 216; //波特率设为 57600 UTX0IF = 0; } 函数功能:初始化串口 0,将 I/O 映射到 P0 口,P0 优先作为串口 0 使用,UART 工作方式, 波特率为 57600。使用晶振作为系统时钟源。 void UartTX_Send_String(char *Data,int len); 函数原型: void UartTX_Send_String(char *Data,int len) { int j; for(j=0;j> 16); ST1 = (UINT8)(SLEEPCMDTimer >> 8); ST0 = (UINT8) SLEEPCMDTimer; } 函数功能:设置睡眠时间,在 sec 秒以后由 ST 唤醒 CC2530,在调用这个函数之前必须先调用 Init_SLEEPCMD_TIMER ( ),否 则不能 唤 醒 CC2530 。通常 在 这个函 数 以后会 出现 SET_POWER_MODE(2)语句。 重要的宏定义 改变系统的电 源功耗模式 #define SET_POWER_MODE(mode) \ do { \ if(mode == 0) { SLEEPCMD &= ~0x03; } \ else if (mode == 3) { SLEEPCMD |= 0x03; } \ else { SLEEPCMD &= ~0x03; SLEEPCMD |= mode; } \ PCON |= 0x01; \ asm("NOP"); \ }while (0) 1.7 看门狗 看门狗的作用是在 CPU 在软件中跑飞的情况下的一种恢复方式,当软件在选择时间间隔内未 清除看门狗,看门狗复位系统。看门狗可用在对电噪声、电源故障、静电放电等高可靠情况 下。如果看门狗不需要应用,可配置成看门狗定时器用做间隔定时,在选定时间间隔产生中断。 看门狗定时器的特性如下: ? 4 个可选择时间间隔 ? 看门狗模式 ? 定时器模式 ? 定时器模式下中断请求产生 看门狗定时器做为一般用途可作为看门狗定时器和定时器用, WDCTL 寄存器控制看门狗模块 操作。 1.7.1CC2530 基础实验 21:看门狗模式 实验介绍 程序在主程序中没有连续改变小灯的状态,而在开始运行时将其关闭,延时后点亮。实验现 象是一只小灯不断闪烁,这是因为程序中启动了看门狗,看门狗时间长度为 1 秒,如果 1 秒内没 有复位看门狗的话,系统将复位。系统复位后再次开启看门狗,1 秒后复位。 实验相关寄存器 实验中操作了的寄存器有 P1,P1DIR,P1SEL,WDTCL,CLKCONCMD 等寄存器。 P1 参见实验 1 P1DIR 参见实验 1 P1SEL 参见实验 1 CLKCONCMD 参见实验 10 SLEEPCMD 参见实验 10 WDCTL(看门狗定时器控制寄存器) 位号位名复位值操作性功能描述 7:4 CLR[3:0] 0000 读/写看门狗复位,先写 0xa 再写 0x5 复位看门 狗,两次写入不超过 0.5 个看门狗周期, 读出为 0000。 3 EN 0 读/写看门狗定时器使能位,在定时器模式下写 0 停止计数,在看门狗模式下写 0 无效。 0 停止计数,1 启动看门狗/开始计数。 2 MODE 0 读/写看门狗定时器模式 0 看门狗模式 ,1 定时器模式。 1:0 INT[1:0] 00 读/写看门狗时间间隔选择。 00 1 秒 01 0.25 秒 10 15.625 毫秒 11 1.9 毫秒(以 32.768K 时钟计算) 实验相关函数 void Delay(void)函数原型: void Delay(void) { uint n; for(n=50000;n>0;n--); for(n=50000;n>0;n--); for(n=50000;n>0;n--); for(n=50000;n>0;n--); for(n=50000;n>0;n--); for(n=50000;n>0;n--); for(n=50000;n>0;n--); } 函数功能:软件延时 10.94ms。 void Init_IO(void);函数原型: void Init_IO(void) { P1DIR = 0x03; led1 = 1; led2 = 1; } 函数功能:将 P10,P11 设置为输出控制 LED。 void Init_Watchdog(void);函数原型: void Init_Watchdog(void) { WDCTL = 0x00; //时间间隔一秒,看门狗模式 WDCTL |= 0x08; //启动看门狗 } 函数功能:以看门狗模式启动看门狗定时器,看门狗复位时隔 1 秒。 void Init_Clock(void);函数原型: void Init_Clock(void) { CLKCONCMD = 0X00; } 函数功能:将系统时钟设为晶振,低速时钟设为晶振,程序对时钟要求不高,不用等待晶振 稳定。 1.7.2CC2530 基础实验 22:喂狗 实验介绍 本实验与实验 20 一都以看门狗为学习目标,在实验 21 学会初始化看门狗,同时也知道了看 门狗的作用,本实验着重学习复位看门狗。复位看门狗后小灯不会闪烁。 实验相关寄存器 实验中操作了的寄存器有 P1,P1DIR,P1SEL, WDTCL,CLKCONCMD 等寄存器。 P1 参见实验 1 P1DIR 参见实验 1 P1SEL 参见实验 1 CLKCONCMD 参见实验 10 SLEEPCMD 参见实验 10 WDCTL 参见实验 20 实验相关函数 void Delay(void); 参见实验 20 void Init_IO(void); 参见实验 20 void Init_Watchdog(void); 参见实验 20 void Init_Clock(void); 参见实验 20 void FeetDog(void)函数原型: void FeetDog(void) { WDCTL = 0xa0; WDCTL = 0x50; } 函数功能:复位看门狗,必须在看门狗时间间隔内调用本函数复位看门狗,系统会被强制复 位,此时调用本函数已无意义。
/
本文档为【CC2530基础实验V1&#46;00】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索