Other Parts Discussed in Thread: CC2531
您好!
我对 CC2531非常陌生、我正在寻找一些有关设置计时器的帮助。 我正在使用 CC 调试器在 IAR 中进行设置。 下面是我用于将计时器设置为自由运行模式的代码。
//输入频率默认为内部32MHz XOSC
#define INPUT_CLK_FREQ (32000000UL/32UL)
#define TIMER_TICK FREQ_MS (1)
#define TIMER_16BIT_VAL (((INPUT_CLK_FREQ/1000)/TIMER_TICK _FREQ_MS)
//完整性检查
#IF (TIMER_16BIT_VAL > 65535)
错误计时器值不能与16位计时器匹配
#endif
void setup(){//set 寄存器不会影响计时器
}
void time_setup(){
//设置 Timer_1
//以下两个命令设置计时器的上限和下限
T1CC0L =(无符号字符)(TIMER_16BIT_VAL 和0xFF);
T1CC0H =(无符号字符)((TIMER_16BIT_VAL >> 8)& 0xFF);
T1CCTL0 = 0x44;//中断被启用、比较模式
T1CTL = 0x01;//节拍频率/32、自由运行模式
}
void main (void){
Setup();
TIME_setup();
//将 CC2531的 P1.0设置为输出
P0DIR = 0x01;
P1DIR = 0x01;
while (1){
if (//condition){
//执行此操作
}
否则{
//复位
};
};
T1IE = 1;
//printf ("Hello World!\n");
FREQCTRL += 5;
}
#pragma vector=t1_vector
_interrupt 静态 void t1_ISR (void)
{
//清除中断标志
T1STAT &=~ 0x01;
//切换引脚
P0 ^= 0x01;// P1.0处应看到500Hz
}
从文档中可以看到、我认为这是正确的、但是当我启动程序时、寄存器值不会在"Watch"窗口中发生变化。 我再次非常熟悉这一点、如果有任何帮助、提示和技巧、我将不胜感激。 感谢您的帮助!
Brandon