【单片机】STM32的启动流程(Keil)

观察启动文件:

1、分配堆栈,设置栈顶地址和堆的开始地址和结束地址

2、保持堆栈8字节对齐,设置使用的指令集

3、建立中断向量表

注意:__initial_sp是栈顶地址,DCD表示分配一个4字节空间,所以Reset_Handler的地址就是0x08000004,0x08000000作为程序的第一个地址保留,实际存的是栈顶的地址。(0x08000000由链接器的参数IROM1决定,就是这个:)

4、具体的复位中断函数该怎么处理

在Reset_Handler处理函数里运行SystemInit配置系统时钟,然后运行__main,在__main里初始化堆栈和初始化映像文件,将RW-data的数据复制到RAM中,然后跳转到用户的main函数里。

5、别的各种中断处理程序,不过都是WEAK性质,用户可以重定义。

6、定义用不用MicroLIB的判断

所以STM32的启动流程是,上电,CPU的时序逻辑电路完成两件事:1、将0x08000000存放的栈顶地址放入SP,0x08000004存放的复位中断处理函数的地址放入PC程序计数器,然后进入复位中断,在Reset_Handler里初始化,然后跳转main函数。

如果后面还有IAP的,IAP就是直接跳转到后面程序的Reset_Handler,这次中断向量表里存放的就是相应中断处理函数的地址。新Reset_Handler处理函数里跳转到新main函数,第一时间修改SCB->VTOR寄存器,这里面存放的就是中断向量表的偏移量。在新程序里发生中断,PC指针跳转到新的中断向量表处,找到对应的中断向量表,根据里面的地址跳转到相应的中断处理函数。

相关推荐
Rocktech_ruixun1 小时前
机器人本地跑LLM大模型对主板硬件有什么要求?瑞迅科技RK3588/3568方案选型解析
人工智能·科技·嵌入式硬件·机器人·边缘计算
天空'之城3 小时前
单片机基础核心知识点汇总(三十四)
单片机·嵌入式硬件
Horn Still Sounds4 小时前
51单片机入门:硬件基础、位运算、数码管动态显示完整梳理
嵌入式硬件·mongodb·51单片机
三佛科技-187366133975 小时前
24W-48W隔离双绕组非标自供电芯片LP3718CD(电路原理图)
单片机·嵌入式硬件
糖糖单片机设计7 小时前
基于 STM32 的小型鸟类宠物繁殖系统
stm32·嵌入式硬件·宠物
电子元器件选型哥8 小时前
一文讲清LLC谐振电路工作原理
单片机·嵌入式硬件·硬件工程师·电子元器件·器件选型
HUI-4749 小时前
EG1162|SOP‑16 高压同步整流降压控制器,最高 600V 输入,大电流 5V 输出优选
嵌入式硬件·硬件工程
POMAGTOR9 小时前
【5G 通讯 POGOPIN 弹簧顶针连接器解决方案】
网络·嵌入式硬件·5g
ZLG_zhiyuan9 小时前
测试方案 | 从“000”到“111”,高效完成100BASE-TX以太网眼图测试
单片机·嵌入式硬件
恒锐丰科技林技术员9 小时前
EG1198:120V 宽压内置 MOS 降压 DC‑DC 电源芯片解析
经验分享·嵌入式硬件·硬件工程