msp430 g2553 timer 中断总结-64体育

嵌入式 > 技术百科 > 详情

msp430 g2553 timer 中断总结

发布时间:2024-11-13 发布时间:
|

目前总共用到了四个中断向量,我觉得已经把g2553的所有定时器中断都用到了。

定时器有两个,ta0与ta1,每个定时器又有两个中断向量

1,ccr0到达时的中断,在计数模式时候很有用,平时定时器的基本功能。

2,ccr1,ccr2,以及 overflow时候的中断向量,这里面又有三个中断标志。

 

#define timer0_a1_vector (8 * 2u) /* 0xfff0 timer0)a cc1, ta0 */

#define timer0_a0_vector (9 * 2u) /* 0xfff2 timer0_a cc0 */ . .

#define timer1_a1_vector (12 * 2u) /* 0xfff8 timer1_a cc1-4, ta1 */

#define timer1_a0_vector (13 * 2u) /* 0xfffa timer1_a cc0 */

 
可见,每个timera模块有两个中断向量
更详细一点,查阅用户指南可知:
timera0只针对ccr0的计数溢出
timera1再查询taiv后可知道是ccr1,还是ccr2,亦或taifg引起的,至于taifg是什么情况下置位的,则要看ta工作的模式

ta0的两个中断:

#pragma vector=timer0_a0_vector

__interrupt void timera0(void)

{

    //计数到达时候的代码

}

 

#pragma vector=timer0_a1_vector

__interrupt void timer0_a(void)

{

 switch( ta0iv )    //taiv中断向量寄存器  用于

 {

   case  2: break;                          // ccr1 not used   捕获/比较器1

   case  4: break;                          // ccr2 not used    捕获/比较器2

   case 10: break;                  // overflow  定时器溢出            

 }

 

下面是ta1的两个中断向量,注意向量名字。

#pragma vector=timer1_a0_vector

__interrupt void timera1(void)

{

  //计数到达时候的代码

}

 

#pragma vector=timer1_a1_vector      //timer1_a cc1  的中断向量

__interrupt void timer_a1(void)

{  unsigned int count;  char counth,countl;  float mile;  uchar shi[2];        //的方法进行判断是哪一个中断源产生的中断

  switch(ta1iv)    //如果是timer1_a cc1产生的中断

  {

    case 2:   break;    // ccr1 not used   捕获/比较器1

    case 4:break;  // ccr2 not used    捕获/比较器2

    case 10:break; // overflow  定时器溢出

   }

 

另外ta1与ta2的寄存器名字也有不同设置时候需要注意


 

『本文转载自网络,64体育的版权归原作者所有,如有侵权请联系删除』

热门文章 更多
高效led驱动器具有可控硅调光和有源pfc特性
网站地图