当前位置: 首页 > news >正文

【单片机】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指针跳转到新的中断向量表处,找到对应的中断向量表,根据里面的地址跳转到相应的中断处理函数。

http://www.jsqmd.com/news/565406/

相关文章:

  • OpenCore Legacy Patcher终极解决方案:让老旧Mac焕发新生的五步实战指南
  • nlp_gte_sentence-embedding_chinese-large模型版本管理:MLflow实践指南
  • GANSS GS87蓝牙键盘+MX Master3鼠标:如何无缝切换控制3台电脑?
  • 告别重复操作:用快马生成智能浏览器扩展,极速提升前端调试与数据提取效率
  • 千问3.5-2B效果对比:在相同硬件下,较Qwen-VL-Chat提速37%,显存降低29%
  • 文墨共鸣实际落地:政务OA系统嵌入水墨风语义比对插件的技术实现
  • Phi-4-reasoning-vision-15B可部署方案:低成本GPU算力适配与显存占用优化指南
  • DeepSeek-OCR 2与Claude Code的协同工作流
  • 不养护自感:一个操控与漫游的未来图景
  • TradingAgents-CN本地化部署全攻略:从问题诊断到系统优化
  • GLM-4.1V-9B-Base行业实践:农业病虫害田间照片识别与防治建议辅助
  • C51单片机入门避坑指南:从课后习题到实战项目的5个关键技巧
  • 释放硬件潜能:技术爱好者的Insyde BIOS高级设置解锁方案
  • Linux共享内存原理与高效进程通信实践
  • 选择性记忆提取,把人类遗忘机制用在了RAG上,这架构真有点东西
  • 别再花钱买内网穿透服务了!手把手教你用frp+Linux云服务器搭建自己的专属通道
  • 答辩 PPT 不用熬大夜!Paperxie AI PPT:本科生的毕业答辩「神助攻」
  • UnityLockstep:终极确定性锁步框架实现多人游戏实时同步
  • Fish-Speech-1.5实时字幕生成:会议演讲即时转写
  • 探讨我学校食堂采购密胺餐具,贝莱恩密胺餐具源头工厂怎么收费 - 工业设备
  • Qwen3.5-9B-AWQ-4bit部署教程:免root权限+预装依赖+即启即用架构
  • 终极指南:Czkawka开源文件管理工具,5分钟解决存储空间不足难题
  • springboot+vue基于web的考研服务电子商务平台的设计与实现
  • Qt开发中Q_UNUSED()函数的5个实用场景(附代码示例)
  • 小白也能学会:MogFace透明蒙版可视化,人脸检测不再难
  • eVTOL功率链路设计实战:功率密度、可靠性与热管理的平衡之道
  • 一个按键控制开关机?用三极管和MOS管搭个‘电子自锁开关’吧(附完整电路图)
  • Qwen3.5-9B:企业级开源大模型私有化部署成本与效果评估
  • 不止于搭建:在Kali上配置DVWA靶场后,你的第一个安全测试实战指南
  • YOLOv8 CPU占用过高优化:异步处理与轻量级缩放技巧