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.

[参考译文] 编译器/MSP430FR5994:使用 TimerA

Guru**** 2049300 points
Other Parts Discussed in Thread: MSP430FR5994
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/687101/compiler-msp430fr5994-using-timera

器件型号:MSP430FR5994

工具/软件:TI C/C++编译器

我正在尝试使用中断来测试计时器 A、以打开 LED  

如果没有任何帮助、我们将不胜感激

void main (void){
WDT_A_HOLD (WDT_A_base);//禁用看门狗
PM5CTL0 &=~LOCKLPM5;

P1DIR |= BIT0;

TA0CTL = tassel_1 + MC_Continuous+ ID_8;
TA0CTL = TAIE_1;
TA0CTL = TAIFG_0;

enable_interrupt ();


#pragma vector = TIMER0_A0_vector
_interrupt void TIMERA_ISR (void){
P1OUT |= BIT0;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Steven、

    您需要执行一些操作。

    首先、在代码中选择 tassel_1、即 ACLK。 这在你分配了一个适当的时钟源来驱动 ACLK 时一样正常。
    在下面的示例中、我选择了 SMCLK 以使其保持简单。

    接下来、由于您要查找计时器溢出、因此需要使用 TIMER0_A1_VECTOR、而不是 TIMER0_A0_VECTOR、后者被分配给计数/比较 CCR0。  以下是 MSP430FR5994用户指南中的一段内容。



    接下来、您应该阻止代码从 main 中退出、以便可以使用 while (1)。

    最后、我在中断处理程序中切换 LED。

    我在 MSP430FR5994 Launchpad 上对此进行了测试。


    int main (空)

    WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器

    PM5CTL0 &=~LOCKLPM5;

    P1DIR |= BIT0;

    TA0CTL = tassel_2 | MC__Continous | ID_8;
    TA0CTL &=~(TAIFG_0);//清除 IFG
    TA0CTL |= TAIE_1;//设置 IE

    enable_interrupt ();

    while (1);//阻止代码退出 main




    #pragma vector = TIMER0_A1_vector
    _interrupt void TIMERA_timer_overflow_ISR (void){
    P1OUT ^= BIT0;//切换 LED