開発のヒント

周辺機能、I/O、メモリ

SRAMの内容はリセットでは消えない

SRAMの内容は電源OFF/ONで消えてしまいますが、電源OFF/ONを伴わないリセットであれば、SRAMの内容は消えません。

電源OFF/ONを伴わないリセットでSRAMの内容が消えたように見えるのは、コンパイラがソフトウェアの変数や配列をSRAM上の.bssや.dataセクションに配置して、リセット割込みハンドラ(Reset_Handler)で実行するローダが.bss、.dataセクションに配置されている変数や配列を初期化してからmain関数を呼び出すためです。.bssセクションに配置されている変数や配列は、Cortex-Mマイコンの処理系の場合は0で初期化されます。

リンカスクリプトで.bss、.dataセクション以外の初期化されないRAMセクションを作成し、そこに変数や配列を配置すれば、電源OFF/ONを伴わないリセットがかかってもデータを保持できます。

注:STM32シリーズによっては、リセットでメモリ保持ができないマイコンもあります。使用前に当該マイコンのリファレンス·マニュアル等でご確認ください。

下記は、STM32CubeIDE(GNU C, GNU ld)での一例です。

126-1

126-2

126-3

過去の開発のヒントはこちら