Dear team,
The following is the value of the register printed out when it cannot sleep. It is currently impossible to determine what went wrong
The code is following
if (SYSRSTIV == SYSRSTIV_LPM5WU) {
//reset from LPM35
clockInit();
rtcReStart();
__enable_interrupt();
taskRun();
enterLPM35();
} else {
//POR init
clockInit();
rtcInit();
enterLPM35();
}
}
static void enterLPM35(void)
{
PMMCTL0_H = PMMPW_H;
PMMCTL0_L &= ~SVSLE;
PMMCTL0_L |= PMMREGOFF;
PMMCTL0_H = 0;
__enable_interrupt();
__bis_SR_register(LPM3_bits + GIE); // LPM3 + Enable interrupt
}
If it cannot enter sleep, the program will run into an infinite loop. At present, it sometimes enters an infinite loop. This position should not appear. Under normal circumstances, the CPU Core power supply will be cut off after __bis_SR_register(LPM3_bits + GIE) and will not continue to run.
From the errata sheet, the debug mode will lead to sleep failure. I have also tried to use a 4.7K pull-down resistor on the TEST pin to prevent TEST from being pulled high. The four IOs PJ0-PJ3 are all set to output, but they still cannot enter sleep.
Please help to check this issue.
BR,
Susan