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:时间计算

Guru**** 2387080 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/1068523/msp430fr5994-calculation-of-time

部件号:MSP430FR5994

大家好,团队

它是否有一些函数来计算 msp430r5994的起点的工作时间?

最佳

高升

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

    高升,

    不幸的是,MSP430FR5994 MCU 中没有“内置”功能。  但是,在 SW 中使用任意多个计时器可以轻松完成此操作。

    这里 的[LINK] 是一个非常简单的示例,显示了如何使用计时器。  我在这里做了一些修改,以向您展示如何使用中断每秒更新一次计数器。  如果需要,它甚至会切换 IO 针脚,以便您可以使用示波器或逻辑探头进行监控。

    如果需要不同的更新速率,请更改计时器 TA0CCR0寄存器值的周期。  例如,如果要计算0.1秒的数字,则将 TA0CCR0值更改为(32768/10)。  

    int main(void)
    {
        WDTCTL = WDTPW | WDTHOLD;               // Stop WDT
    
        // Configure GPIO
        P1DIR |= BIT0;
        P1OUT |= BIT0;
    
        // Disable the GPIO power-on default high-impedance mode to activate
        // previously configured port settings
        PM5CTL0 &= ~LOCKLPM5;
        
        long seconds_counter = 0;
    
        TA0CCTL0 = CCIE;                        // TACCR0 interrupt enabled
        TA0CCR0 = 32768;                        // Using ACLK @ 32768KHz, generate interrupt every 1 second
        TA0CTL = TASSEL__ACLK | MC__UP;        // ACLK, UP mode
    
        __bis_SR_register(LPM0_bits + GIE);     // Enter LPM0 w/ interrupt
        __no_operation();                       // For debugger
    }
    
    // Timer0_A0 interrupt service routine
    #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
    #pragma vector = TIMER0_A0_VECTOR
    __interrupt void Timer0_A0_ISR (void)
    #elif defined(__GNUC__)
    void __attribute__ ((interrupt(TIMER0_A0_VECTOR))) Timer0_A0_ISR (void)
    #else
    #error Compiler not supported!
    #endif
    {
        P1OUT ^= BIT0;
        seconds_counter++;
    }
    

    这是否有助于回答您的问题?

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

    是的,谢谢。