TI CC2530 学习笔记-7-NewBit-CC2530-Interrupt-定时器中断
设置CC2530定时器4每1ms中断一次,在中断里对溢出进行计数,当计数达到1000次(1秒)时小灯状态改变。
- 配置定时器和LED
halMcuWaitUs(10000); //等待时间稳定,约10ms
CLKCONCMD &= ~0x47; //选择外部32MHZ时钟, 不分频
//TICKSPD不改变,保持为0x01,即定时器标记频率为16MHz
while( (CLKCONSTA & 0x47) != 0x00 ); //切换时钟源后再次等待稳定
P0DIR |= 0x40; //配置IO为输出
T4CTL = 0xE2; //128分频(0.125Mhz),8us模模式
T4CCTL0 = 0x04; //比较模式
T4CC0 = 125; //溢出值 125*8us = 1000us = 1ms
LED_R_IO = LED_R_ACTIVE;
gT_count = 0;
T4CTL |= 0x08; //打开溢出中断
T4CCTL0 |= 0x40;//开T4通道0中断
IEN1 |= 0x10; //开T4中断
IEN0 |= 0X80; //开总中断
T4CTL |= 0x10; //启动T4
- 在main函数的while循环等待中断发生
while(1)
{
//等待中断发生
}
- 中断程序
#pragma vector = T4_VECTOR
__interrupt void T4_ISR(void)
{
IRCON = 0x00; //可不清中断标志,硬件自动完成
gT_count++;
if (gT_count >= 1000)
{
gT_count = 0;
LED_R_IO = !LED_R_IO; //翻转LED
}
}