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.
想要让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可以跳出循环;同时单步调试的时候没有任何问题。但明显程序脱机运行的时候是无法跳出循环的,这是为什么呢?