TI E2E™ 设计支持论坛将于 5 月 30 日至 6 月 1 日进行维护。如果您在此期间需要技术支持,请联系 TI 的客户支持中心寻求帮助。

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.

msp430f5529lp XT1故障失效

想要让ACLK配置成XT1的32.768kHz晶振,代码如下

P5SEL |= BIT4 + BIT5; //P5.4&P5.5 in XT1 mode
UCSCTL6 &= ~(XT1OFF); //XT1 on
UCSCTL6 |= XCAP_3; //cap 12pF
UCSCTL3 = 0;
do{
    UCSCTL7 &= ~(XT1LFOFFG + XT2OFFG + DCOFFG);
    SFRIFG1 &= ~OFIFG;
    if(UCSCTL7&XT1LFOFFG){
        P4DIR |= BIT7; P4OUT |= BIT7;
    }
    else{
        P4DIR |= BIT7; P4OUT &= ~BIT7;
    }
}while (UCSCTL7&XT1LFOFFG); //loop until XT works
UCSCTL6 &= ~(XT1DRIVE_3); //low power
UCSCTL4 |= SELA_0; //ACLK from XT1

一开始是用原来官方例程里的判断条件,发现程序始终跳不出do while循环,于是把条件改成判断xt1lfoffg发现也有同样的问题,但如果改成判断dcoffg就可以顺利运行,而且循环内P4.7口的灯亮,说明xt1的故障失效位始终为1。

更奇怪的是,我用CCS V6进行debug,resume之后进入死循环,suspend之后再按resume可以跳出循环;同时单步调试的时候没有任何问题。但明显程序脱机运行的时候是无法跳出循环的,这是为什么呢?