ここに示すアイドルフックを作成しました
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は常にオンのままですが、スコープを設定すると、割り込みの1つ(UART)を介してmcuをウェイクアップし、その後再びオンになるたびに、数命令サイクルの間オフになります。LPM3の指示をコメントアウトすると、計画どおりに進みます。LEDはほとんどの時間オフのままで、タスクが実行されているときにのみオンになります。
MSP4f305438を使用しています
何か案は?