STM32 重加電數據不丟失

1.STM32啓動過程

  硬件復位後,第一步是執行復位處理程序,這個程序的入口在啓動代碼裏(默認),摘錄一段cortex-m3的復位處理入口代碼::

 1: Reset_Handler PROC ;PROC等同於FUNCTION,表示一個函數的開始,與ENDP相對?
  2:EXPORT Reset_Handler [WEAK]
  3:
 4: IMPORT SystemInit
 5: IMPORT __main
 6: LDR R0, =SystemInit
 7: BLX R0
 8: LDR R0, =__main
 9: BX R0
10: ENDP
   初始化堆棧指針、執行完用戶定義的底層初始化代碼(SystemInit函數)後,接下來的代碼調用了__main函數,這裏__main函數會調用一些列的C庫函數,完成代碼和數據的複製、解壓縮以及ZI數據的零初始化。

2.需要啓動後變量(內存)不被清零

可以在工程中打開工程名.sct文件,標識那些RAM不初始化,__attribute__((at(0x2001F000)))指定變量地址。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章