前段時間對stm32的啟動代碼進行了一個小小的研究,發現了一些比較好用的技巧,在這分享下!
總體上說,整個啟動代碼就是中斷初始化為主,以及中斷之后如何進行調配函數!
首先看這么一段代碼:Reset_Handler
~~~
; Reset handler
Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT __main
IMPORT SysInit
IMPORT SystemInit
LDR R0, =SystemInit
BLX R0
LDR R0, =SysInit
BLX R0
LDR R0, =__main
BX R0
ENDP
~~~
這其實上是Reset中斷后生的事情,不難發現,這也就是進入主函數的通道!
我在這里加了一個
~~~
IMPORT SysInit
~~~
~~~
LDR R0, =SysInit
BLX R0
~~~
這是我自己寫的一個函數,因為我每次程序一開始跑,我就像讓他運行這段代碼,所以我就把他也加到這里了!
可見,我們如果想在進入主函數之前運行什么,那么我們就可以在這里加我們需要的代碼;
一定要注意我加的位置,他其實上就是入棧和出棧的做法!所以我們一定要注意入棧和出棧的順序!

我們在來看看其他的中斷處理,也都是同樣的道理!
~~~
PendSV_Handler PROC
EXPORT PendSV_Handler [WEAK]
B .
ENDP
SysTick_Handler PROC
EXPORT SysTick_Handler [WEAK]
B .
ENDP
~~~
ok,這個其實很簡單,不過很實用!
PS:有的人用的是庫里面的bootloader,為只讀文件,我們需要把他刪了,重新復制一個添加進去!
- 前言
- 【菜鳥入門】stm32的第一個程序--LED
- 【菜鳥入門】stm32 之 掃描按鍵
- 【菜鳥入門】stm32 之 中斷按鍵
- 【菜鳥入門】stm32 之 USART
- 【菜鳥入門】stm32 之 iic
- 【菜鳥入門】stm32 之 eeprom
- 【菜鳥入門】stm32 之 pwm
- 【菜鳥入門】stm32 之 ADC 模數轉換
- 【菜鳥入門】stm32 之 實時時鐘
- 【菜鳥入門】stm32 之 DMA
- 【菜鳥入門】stm32 之 DAC
- 【STM庫應用】stm32 之 USART
- 中斷源去抖辦法
- stm32 啟動代碼應用技巧
- 【STM庫應用】stm32 之 IIC應用
- 【STM庫應用】stm32 之 中斷按鍵初始化(注意事項)
- 關于結構體初始化
- 【STM庫應用】stm32 之 TIM (詳解一 通用定時器)
- 【STM庫應用】stm32 之 TIM (詳解二 脈沖寬度、周期測量)
- 【stm32庫應用】SD驅動移植(基于SDIO外設)
- SD卡fat文件系統移植
- stm32 DMA初始化選項研究
- stm32 靈活靜態存儲控制器(FSMC)(NORFLASH\PSRAM)
- 【stm32+uC/OS-II】ucosii移植簡單詳細步驟
- STM32 加入調試信息來調試代碼
- NRF24L01 無線通信模塊使用