CC2530定时器1的模模式中断
2013-10-17 20:00 djky12 阅读(4042) 评论(1) 收藏 举报CC2530定时器1的模模式中断
void timer1SInit(void)
{
T1CCTL0 = 0;
T1CTL &= ~0x0F; //clear register
T1CTL |= 0x0a; //32分频,模模式运行
TIMIF |=0X40;
T1CCTL0 |= (0x40 | 0x04);//比较模式
/*装初值,本次为2500*/
T1CC0L = 0xc4;
T1CC0H =0x09;
IRCON &= ~0x02;
TIMIF |= 0x40;//溢出中断标志位
IEN1 |= 0x02; //enable timer1 interrupt
}
#pragma vector = T1_VECTOR//定时器1
__interrupt void T1_ISR(void)
{
if(T1STAT &0x01)
{
........
T1CC0L = ?;//可重新装计数值,先设置T1CC0L 后设置T1CC0H
T1CC0H = ?;
}
T1STAT = 0;
}
注意1:模模式需要开启通道0的输出比较模式,否则计数器只有到了0XFF时才会产生溢出中断(相应的产生溢出标志),也就是如果没有设置通道0的输出比较模式,计数器的值到达T1CC0后,不会产生溢出中断(相应的溢出标志不会置1),这点需要特别注意。
注意2:原来T1的模模式不是普通的溢出中断,和连续计数模式不同,它必须设置通道0的输出比较,而且溢出时也是通道0的中断标志,而非T1的总溢出中断标志。同理T3,T4的模模式中断也是这样。
总结:要使用CC2530 Time1的模模式中断,必须开启Time1的通道0并设置T1CTL成输出比较模式;在中断函数中也只有CC0的中断标志位,而不是使用溢出中断标记位。
http://hi.baidu.com/nucyueyao/item/0545e0cfcad59fbb0c0a7b34