msp430f5310定时器的认识

本文介绍了5310微控制器中的四种定时器配置方法,包括Timer_A和Timer_B的不同特性。详细解释了每个计数器包含的两个中断向量的功能,以及在配置增加计数模式时ccr1和ccr2值的要求,确保中断时间间隔的稳定性。此外,还提供了具体的寄存器设置示例和中断处理函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

a、有两种类型的定时器:Timer_A和Timer_B,其中Timer_A中又有3个同类型的定时器,TimerA0、TimerA1和TimerA2,也就是说5310能够提供给你4个定时器进行单独配置使用。

b、每一个计数器中有两个中断向量,一个专门为ccr0分配的中断向量,另一个为公用中断向量。因为ccr0用于控制计数周期,也就是每当TA0R计数到TA0CCR0所设定的数值后就会清0,并且拥有最高的中断优先级。

c、需要注意的是在增加计数模式时ccr1和ccr2的值应该小于ccr0,否则ccr1和ccr2不会产生中断,并且每次ccr1和ccr2中断后要把它重新赋值,这样才能保证ccr1和ccr2的中断时间间隔不变。

TA0CCR0 = 8000; //TA0CCR0 是16位寄存器,最高65535(切记),ccr0必须最大,因为一旦计数到ccr0,TA0R便立刻清0,用于控制周期没8000单位时间就会触发一次

TA0CCR1 = 4000; //   当TA0R计数到4000时,不会清0,
TA0CCR2 = 1000; //   当TA0R计数到1000时,不会清0,

下面是两个中断函数,一个专用中断向量,一个为公用中断向量:

!!!中断中最需要注意的是:一旦某一个比较器开了中断使能,必须要有对应的中断处理程序,否则程序会跑飞!!!

/ Timer0 A0 interrupt service routine
#pragma vector=TIMER0_A0_VECTOR   //CCR0的中断向量
__interrupt void Timer_A0 (void)
{                 
  //中断处理,当计数器TA0R计数到CCR0的时候会触发这个中断函数     
}


#pragma vector=TIMER0_A1_VECTOR   //公用中断向量
__interrupt void TIMER0_A1_ISR(void)
{
  switch(TA0IV)
  {                 
    case CCIFG1:    //中断处理函数      //计数至CCR1触发  
             break;
    case CCIFG2:                      //计数至CCR2触发 
             break;
    case CCIFG3:  break;              // CCR3 not used

    case 8:  break;                    // CCR4 not used

    case 10: break;                    // CCR5 not used

    case 12: break;                    // Reserved not used

    case 14: break;                    // 溢出触发         

    default: break;

 }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值