2.4实验分析
CC2530的T3定时器(8位)需要了解T3CTL、T3CCTL0、T3CC0、T3CCTL1、T3CC1、IEN1寄存器。 如表所示:
表1 定时器3控制
表2 定时器3通道0控制
表3定时器3通道0比较
表4定时器3通道1控制
表5定时器3通道比较
表6中断使能1
按照表格寄存器的内容,对T3 进行配置,由于定时器T3 为8 位所以配置稍有不同。
T3CTL |= 0x08 ; //开溢出中断
T3IE = 1; //开总中断和T3 中断
T3CTL |= 0xE0; //128 分频,128/16000000*N=0.5S,N=62500
T3CTL &= ~0x03; //自动重装00->0xff 62500/255=245(次)
T3CTL |= 0x10; //启动
EA = 1; //开总中断
注意:
(1)T3CTL &= ~0X03; 这条语句理解为:0X03=0000 0011,则 ~0X03=1111 1100;所以当执行 T3CTL &= ~0X03 后,T3CTL 其它位保持不变,D0、D1 变为 0。
(2)由于是 128 分频,则计一次数需要时间 t=128/16000000, 如果我们希望得到一个 0.5s的延时,那么 128/16000000*N=0.5S,就得计 N=65200 次数。而我们又将 Timer3 设置为自动重装 0x00—0xFF,即产生一次溢出中断计数 256 次,而我们现在是想它计算65200 次,所以,我们要累加 254 次溢出中断才让 LED1 取反。
|