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.

[参考译文] MSP430F2013:当LPM3???时ACLK DIV不工作

Guru**** 2583905 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1094443/msp430f2013-aclk-div-not-working-when-lpm3

部件号:MSP430F2013

大家好...

使用带有以下小应用程序代码的eZ430-2013开发板

我发现如果我将ACLK端口移出(下面的代码将此行删除P1SEL || BIT0; 因为我只是使用开发板上的LED),删除除数下面的LPM3_BITS工作正常,但当我将LPM3_BITS放回代码中时,ACLK (分配了VLO clk)永远不会更改其频率...有人能告诉我为什么?

int main(void)
{
    BCSCTL1 |= DIVA_3;                        // ACLK/2
    BCSCTL3 |= LFXT1S_2;                      // ACLK = VLO
    WDTCTL = WDT_ADLY_1000;                   // Interval timer
    IE1 |= WDTIE;                             // Enable WDT interrupt

    P1DIR |= 0x01;                            // Set P1.0 to output direction

    __bis_SR_register(LPM3_bits + GIE);       // Enter LPM3 w/interrupt
}

#pragma vector=WDT_VECTOR
__interrupt void watchdog_timer(void)
{
    P1OUT ^= 0x01;                            // Toggle P1.0 using exclusive-OR
}

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

    您好,Steve,

    请帮助我理解您的意思:

    ACLK2013 -lpm3"]ACLK (分配了VLO clk)从不更改其频率[/报价]

    此外,如果我理解正确,您正在尝试从ACLK运行监视程序。 但是,必须将WDTCTL.WDTSSEL =1设置为使其发生。 这可能解释了为什么输入LPM3会影响行为:LPM3禁用SMCLK,后者当前正在为看门狗计时。

    此致,

    Evan

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

    你好,Evan...

    参考上面的代码.... BCSCTL3赋值将ACLK输出设置为VLO (请参阅用户指南)。 WDTSSEL通过宏WDT_ADLY_1000 (由TI在其MSP430文件中提供)进行设置。 此处我不是使用ACLK来使用SMCLK。  基本上我把ACLK移出,当我摆脱LPM3 (意味着除数BCSCTL1设置工作)...将LPM3添加到混合中,它不再工作)

    谢谢

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

    Steve,

    感谢您提供信息。 我认为您正在使用的宏可能是设置WDTCTL.WDTSSEL = 0,这是基于我在MSP标题文件中看到的内容。 请在您的环境中确认。

    #define WDT_ADLY_1000      (WDTPW+WDTTMSEL+WDTCNTCL+WDTIS2+WDTSSEL0)

    即使您没有使用SMCLK进行任何其他操作,我认为看门狗默认为SMCLK作为时钟源(参见下图)。 正如我在上文所述,SMCLK在LPM3中不可用。  

    请尝试设置WDTCTL.WDTSSEL =1并查看它是否更改了行为。

    此致,

    Evan

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

    Evan

    我正在调用的宏是:

    /* WDT is clocked by fACLK (assumed 32KHz) */
    #define WDT_ADLY_1000       (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL)                 /* 1000ms  " */

    它将WDTSSEL称为:

    #define WDTSSEL                (0x0004)

    但我在做这个小实验的时候发现了一些东西… 当我从调试器下载并点击“运行”时,它的工作方式就好像不存在除数器一样,但是如果我暂停调试器,然后再次运行,它似乎工作正常...

    很明显寄存器还可以,但调试器

    感谢你的帮助

    Steve