開発のヒント
周辺機能、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)での一例です。
過去の開発のヒントはこちら