本帖最后由 十步杀一人 于 2019-1-18 10:06 编辑
请教论坛朋友,一小段代码,程序陷在DO WHILE循环走不出来,示波器测量XT1没有起振
WDTCTL = WDTPW + WDTHOLD; //Stop watchdog timer
PJOUT = 0;
PJSEL0 = BIT4 | BIT5; //For XT1
PJDIR = 0xFFFF;
PM5CTL0 &= ~LOCKLPM5;
CSCTL0_H = CSKEY_H; //Unlock CS registers
CSCTL1 = DCORSEL | DCOFSEL_4; //Set DCO to 1MHz
CSCTL2 = SELA__LFXTCLK | SELS__DCOCLK | SELM__DCOCLK;
CSCTL3 = DIVA__1 | DIVS__1 | DIVM__2; // Set all dividers to 1
CSCTL4 &= ~LFXTOFF; // Enable LFXT1
do
{
CSCTL5 &= ~LFXTOFFG; // Clear XT1 fault flag
SFRIFG1 &= ~OFIFG;
}while(SFRIFG1 & OFIFG);
汇编代码是可以正常运行的,转成C后就这样了。 示波器测量,正常运行时32768晶振两端有正弦波,陷入死循环后,晶振只有一侧有波形。
C代码也正常运行过,将project\option\fet debugger\download下的erase main memory选项改为erase main and information memory后
正常运行了几天,现在又不成了。
开发工具是MSP430-FET430UIF ,开发环境是IAR MSP430 7.12.1, windows10
|