マイコン入門spacer ad
トップページに戻る(マイコン徹底入門:STM32で始めるARM/Cortex-M3組み込み開発)
「マイコン徹底入門」とは? |  「マイコン徹底入門」を読む |  ダウンロード |  掲示板 |  筆者の自己紹介


Previous: 10.4.3. WFI命令の実行

Up: 10.4. SLEEPモード

Next: 10.5. STOPモード


マイコン徹底入門:周辺回路編:STM32のペリフェラルを活用: 10. 低電力モード: 10.4. SLEEPモード:

10.4.4. モード移行・復帰の留意事項

 またサンプルプログラムでは、WFI命令の実行の前にターミナルにメッセージを送信していますが、その後50msほどの待ち時間を設けています。これはUSARTへの送信関数実行後すぐにWFI命令を実行してしまうと、送信が完了してしまわないうちにSLEEPモードに入るので、最後の文字が文字化けしてしまうからです。

 EXTI割込みが発生するとRUNモードに復帰します。SLEEPモードではSRAMやレジスタの内容はすべて保持されています。そのためWFI命令を実行した次の行からそのままプログラムが再開します。

 サンプルプログラムではEXTI割込みを利用してモードを移行させていますが、EXTIはチャタリングに敏感です。そこでボタンが押された直後は200msほど待ってから次の処理を行っています。この待ちが無いと、ボタンを1回押してSLEEPモードから復帰したつもりが、すぐにまたSLEEPモードに入ってしまうといった状態となります。一度実験してみてください。

 このサンプルではSLEEPモードからEXTI割込みで復帰しましたが、兎に角割込みが発生しさせすればWFI命令から生じたSLEEPモードから復帰できます。そのためタイマで一定時間が経過したことを計測して割込みを発生させたり、シリアルポートにデータが送信されてきたことをきっかけとして割込みを発生させたりしてRUNモードに復帰させることもできます。


Previous: 10.4.3. WFI命令の実行

Up: 10.4. SLEEPモード

Next: 10.5. STOPモード


このページはITと知的財産の法律情報「法務ネット」の管理人が制作・運営しています。
_Toc266801166