This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430F5438A 定时器中断向量问题

Other Parts Discussed in Thread: MSP430G2553

感觉430的中断向量有点乱,TIMER_A1_BASE 中断向量却显示TA0,下面的宏定义 A5又是什么意思,中断向量是怎么分配的?

#define TIMER0_A1_VECTOR    (53u * 2u) /* 0xFFEA Timer0_A5 CC1-4, TA */
#define TIMER0_A0_VECTOR    (54u * 2u) /* 0xFFEC Timer0_A5 CC0 */

  • TIMER0_A1_VECTOR 和 TIMER0_A0_VECTOR    是TA0的中断向量

    TIMER0_A5 是TIMER0_A 5CCR,意思是有5个独立比较器寄存器

    MSP430中,不同的型号拥有不同的硬件配置,因此中断源也有所差别,TIMER0_A0_VECTOR表示定时器0 A0的中断源,0代表硬件上的定时器,有定时器0 定时器1等;A0代表定时器n内的A0寄存器,通常会有A0 A1等,他们都计数源都来自同一个定时器,但对计数源的数据可以进行不同的处理,从而产生不同的中断。

    TIMER0_A0_VECTOR是计时器0的CCR0的中断寄存器

    TIMER0_A1_VECTOR是计时器0的CCR1-CCR4、TA的寄存器

  • 哦哦,另外GIPO用GPIO_setAsOutputPin(GPIO_PORT_P7,GPIO_PIN5);设置输出后,电平是高还是低呢?
  • 若是想设置输出高或者低电平的话,可以使用

    GPIO_setOutputHighOnPin

    GPIO_setOutputLowOnPin
  • 请问一下怎么用MSP430产生SPWM波形呢,我的程序的定时中断哪里一直报错。可以给我看一下吗
    nclude"msp430g2553.h"
    #define cSMCLK 12000000
    #define SIN_F 200 //定义输出正弦波频率为200hz
    #define SIN_NUM 16 //定义正弦波查表采样点数
    const unsigned int sin_table[SIN_NUM]={64,88,108,122,127,122,108,88,64,39,19,5,0,5,19,39};
    void main(void)
    {
    WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
    BCSCTL1 = CALBC1_12MHZ; //设置定时器时钟为12mhz
    DCOCTL = CALDCO_12MHZ; //DCO频率设置为12mhz
    DCOCTL = DCOCTL&0xE0;
    TA1CTL|= TASSEL_2+MC_1; //TA1设置为增计数模式,时钟为SMCLK(12mhz)
    TA1CCTL1|= OUTMOD_7; //TA1模块设置为模式7输出
    P2SEL|= BIT1; //P2.1为输出口
    P2DIR= BIT1;
    TACCR0=128; //pwm周期为128hz
    }
    void Timer0_A_Init()
    {
    TA0CCTL0 = CCIE;
    TA0CCR0 = cSMCLK/SIN_F/SIN_NUM;
    TA0CTL = TASSEL_2 + MC_1; //TA0为增计数模式,时钟为SMCLK(12mhz)
    _EINT(); //开中断
    }
    //读表
    #pragma vector = TIMER0_A0_VECTOR
    __interrupt void Timer0_A0(void)
    {
    _disable_interrupts();
    Change__Duty();
    _enable_interrupts();
    }
  • 报的什么错误?在main函数中没看到调用Timer0_A_Init()。
    msp430默认是不进行中断嵌套的,所以在中断服务程序里不用关中断。
    另外,这个帖子比较久了,新问题建议发新贴