打印

关于定时器通道的问题

[复制链接]
387|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
迪卡|  楼主 | 2016-9-25 20:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MSP430G2553,我希望使用定时器TimerA0通道1的中断,按照用户手册所说,为了设定定时时间,应该设置TACCR1,并在中断中根据TAIV来判断是否是TACCR1导致的中断。但是我在实验过程中发现,设置TACCR1并不能进入TIMER0_A1_VECTOR对应的中断,而设置TACCR0可以进入中断,而且这时竟然可以出现TAIV = 0x02的情况,即手册上所说的TACCR1导致的中断。
#include <msp430.h>

/*
* main.c
*/
int main(void) {
    WDTCTL = WDTPW | WDTHOLD;   // Stop watchdog timer
    //========设置系统时钟==========
    BCSCTL1 = CALBC1_1MHZ;
    DCOCTL = CALDCO_1MHZ;
    BCSCTL2 |=LFXT1S1;
    //========设置定时器==========
    TA0CTL |= MC_1 + ID_0 + TASSEL_2;
    //MC_1 : 增计数模式
    //ID_0 :输入1分频
    //TASSEL_2 : 输入时钟为SCLK
    TA0CCTL1|= CCIE;//使能比较中断
//   TA0IV = 0x02;
        TA0CCR0 = 10000;//设置比较值

//    TA0CCR1 = 10000;//设置比较值
    _enable_interrupts();
    while(1);
}


//中断服务程序
#pragma vector=TIMER0_A1_VECTOR//固定的格式
__interrupt void Timer_A (void) //定时器A的CC0中断处理程序 必须是没有返回值的
{
    static unsigned int timer = 0;

    switch(TA0IV){
    case 0x02:
        if(timer++ > 100){
            timer = 0;
            P1DIR |= BIT0;
            P1OUT ^= BIT0;
        } break;
    default:
        _nop();
    }
    _nop();
}

相关帖子

沙发
309030| | 2016-9-25 21:09 | 只看该作者
中断的向量对应好没有

使用特权

评论回复
板凳
lwsn| | 2016-9-25 21:22 | 只看该作者
TIMERA0 和 TIMERA1 的中断向量是不一样的

使用特权

评论回复
地板
Varus| | 2016-9-25 21:45 | 只看该作者
改一个就可以进入中断,有可能是楼上说的这个问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

109

主题

650

帖子

1

粉丝