TIPS 2020年12月15日

STM32 STOPモードからの復帰時のクロックについて

クリスタル等でSTM32を動作させている場合、STOPモードに入るとクロックが停止されクリスタルのドライバも無効となります。そのため、多くの場合には、STOPから復帰した直後にクロックの状態を戻す必要があります。HALを使用している場合には、例えばジェネレータが作成したSystemClock_Config()関数を再度呼び出すことで、起動時のクロック状態に戻すことができます。

なお、STOP直後に有効になるクロックソースはMSIもしくはHSI16です。RCC_CFGRレジスタのSTOPWUCK=1の時にはHSI16, STOPWUCK=0の時にはMSIが有効となります。復帰時のMSIのクロック周波数は強制的に通常のリセット値(例えばSTM32L4であれば4MHz)となるようです。そのため、CubeMXを使用していてMSIの設定値を4MHz(4,000KHz)以外を設定していると、HAL_Delayなどが正常に動作しません。SystemClock_Config()をコールしましょう。

この記事をシェア

最近のTIPS