LoginSignup
2
1

More than 3 years have passed since last update.

STM32L4がSTOPモードに入らないときの対処法

Last updated at Posted at 2019-09-26

環境

  • NUCLEO-L432KC(STM32L432KC)
  • STM32CubeMX
  • STM32Cube FW_L4 V1.14.0

症状

STM32L4には、省電力モードがいくつか用意されていて、用途に合わせてモードを切り替えることができる。
ファームウェア付属のサンプルを参考にして、Runモードから以下のようにしてSTOP2モードに入り、

    /* Enter STOP 2 mode */
    HAL_PWREx_EnterSTOP2Mode(PWR_STOPENTRY_WFI);

一定時間経過後RTCからの割り込みをトリガにRunモードに復帰して色々しようとしたところ、どうもSTOP2に入らずすぐに次のRunモード部分に飛んでいるようだった。
色々コードをいじってみたが直らず、ある時成功したかと思いきや、同じコードを書きこみなおすと再び症状が現れた(!?)ので、どうも直っていないようだった。

解決

以下のサイト(STのコミュニティ)
STOP2 mode not Entering from HAL_PWREx_EnterSTOP2Mode
の書き込みによると、
Try to disable the Systick timer. If any IRQ is pending, the core does not enter stop2 mode.
とのこと。そこで、HAL_Delay()やTimeoutの管理に使われているTimebaseのSourceをSysTickから使っていないTIM1に変更すると、STOP2モードに入るようになった。

↓ここを
image.png
↓こうした
image.png

追記(動作未確認)

Systickを止めるにはHAL_SuspendTick()、再開にはHAL_ResumeTick()を使うのかもしれない。

参考

CubeMX/HALのSystick割り込みについて - 滴了庵日録

2
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1