stm32 启动代码应用技巧
最后更新于:2022-04-01 14:51:03
前段时间对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
~~~
这是我自己写的一个函数,因为我每次程序一开始跑,我就像让他运行这段代码,所以我就把他也加到这里了!
可见,我们如果想在进入主函数之前运行什么,那么我们就可以在这里加我们需要的代码;
一定要注意我加的位置,他其实上就是入栈和出栈的做法!所以我们一定要注意入栈和出栈的顺序!
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-21_576915b9e24be.jpg)
我们在来看看其他的中断处理,也都是同样的道理!
~~~
PendSV_Handler PROC
EXPORT PendSV_Handler [WEAK]
B .
ENDP
SysTick_Handler PROC
EXPORT SysTick_Handler [WEAK]
B .
ENDP
~~~
ok,这个其实很简单,不过很实用!
PS:有的人用的是库里面的bootloader,为只读文件,我们需要把他删了,重新复制一个添加进去!