您好!
我正在使用 msp430FR6922控制器。 我附上了供参考的代码。 在测试过程中、有时我的代码卡在" while (!((P4IN&BIT6)==0)}" 语句中。
当代码停留在 while 语句中时、我想在1秒后使用 WDT 复位 MSP430控制器。 因此、控制器重新启动代码...
int main(void)
{
WDTCTL = WDT_ARST_1000 ; // Stop WDT
dev_init_16M(); // Microcontroller set on 16MHz
__enable_interrupt(); // Re-enable all interrupts
__bis_SR_register(GIE); // Enter LPM3, interrupts enabled
DelayStart=1;
while (1)
{
if(DelayStart==1) // For sample 1 send LC data after every 1 sec to tare the LC readings
{
// (DCO=MCLK=16MHZ )so,
// Count/MCLK freq=Time
// 16000000/16MHz=1sec
__delay_cycles(16000000); // delay calculate on 16 MHz
//timer interrupt on
while(!((P4IN&BIT6)==1)){} // Wait until data ready
CurrentLCValue=ReadData(); // Read load cell data
CurrentLCValue1=CurrentLCValue&0x7FFF;
LongtoInt.LongData=CurrentLCValue; // Split 3 byte data into single byte
giTransmitBuffer[0]=LongtoInt.ByteSplit[1];
giTransmitBuffer[1]=LongtoInt.ByteSplit[0];
giTransmitBuffer[2]=0x00;
for(i=0;i<3;i++) // Upto array from start to CRC lenth
{
while(!(UCA0IFG&UCTXIFG));
UCA0TXBUF = giTransmitBuffer[i];
}
}
}我的问题是、当控制器卡在 while 语句中时、WDT 很有帮助?? 是否有任何其他方法可以通过软件复位控制器? 如果是、请为 msp430fr6922控制器编写代码。