目前总共用到了四个中断向量,我觉得已经把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的寄存器名字也有不同设置时候需要注意
上一篇:MSP430 WDT
下一篇:MSP430:AD10
推荐阅读最新更新时间:2024-03-16 15:43
设计资源 培训 开发板 精华推荐
- LPC55S69 新一代基于ARM Cortex-M33内核 通用安全低功耗MCU
- TI MCU 推新了!八月直播揭秘新特性~报名观看赢好礼!
- STM32全国巡回研讨会高能来袭, 快告诉小伙伴们
- nanoPower技术:延长电池寿命,提升传感器性能 2021年1月20日 上午10:00在线研讨会
- 直播已结束【普源精电2020新品发布会暨行业论坛】
- 瑞萨电子 RL78/G11 目标板免费申请中,参与申请也能赢好礼
- 恩智浦开发板交流火热进行中
- “集齐五友”参与KW41Z创意征集活动,赢100元京东卡!
- 电路图站2.0版上线,公开征集网友建议,填写调查问卷赢积分!
- Intel最新物联网解决方案,抢先阅读,下载有惊喜