企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
前段时间对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://box.kancloud.cn/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,为只读文件,我们需要把他删了,重新复制一个添加进去!