访问电脑版页面

导航:老古开发网手机版MSP430单片机定时器

MSP430 G2553 Timer 中断总结

导读:目前总共用到了四个中断向量,我觉得已经把G2553的所有定时器中断都用到了。定时器有两个,TA0与TA1,每个定时器又有两个中断向量1,CCR0到达时的中断,在计数模式时候很有用,平时定时器的基本功能。2,CCR1,CCR2,
关键字:
g2553,MSP430,timer,中断总结,

目前总共用到了四个中断向量,我觉得已经把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的寄存器名字也有不同设置时候需要注意


来源:互联网   作者:karen  2018/9/4 18:40:01
栏目: [ MSP430单片机定时器]

相关阅读

MSP430(G2553)用看门狗定时器来产生周期信号

MSP430功能模块详解系列之——TimerA

msp430单片机延时函数的使用方法

MSP430 G2553 Timer 中断总结

基于msp430单片机定时器的使用方法解析

MSP430单片机精确延时的方法解析

分解MSP430G2553的定时器

基于MSP430的定时器Timer_A 介绍