我写了一个这里显示的空闲钩子
void vApplicationIdleHook( void )
{
asm("nop");
P1OUT &= ~0x01;//go to sleep lights off!
LPM3;// LPM Mode - remove to make debug a little easier...
asm("nop");
}
这应该会导致 LED 关闭,并且 MSP430 在无事可做时进入睡眠状态。我在某些任务期间打开 LED。
我还确保在退出任何可能唤醒 MCU 的中断时修改 SR 中的睡眠模式位(portext.s43 中的调度程序滴答 isr 除外。iar 中的宏是
__bic_SR_register_on_exit(LPM3_bits); // Exit Interrupt as active CPU
然而,似乎让 MCU 进入睡眠状态会导致一些异常行为。LED 始终保持打开状态,尽管当我确定它时,当我通过其中一个中断(UART)唤醒 mcu 时,它会关闭几个指令周期,然后重新打开。如果我注释掉 LPM3 指令,事情就会按计划进行。LED 灯大部分时间保持关闭状态,仅在任务运行时亮起。
我正在使用 MSP4f305438
有任何想法吗?