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

中国建设银行个人网上银行官方网站专业网站定制公司

中国建设银行个人网上银行官方网站,专业网站定制公司,wordpress转为app,成都企业seo一、什么是 STM32 的启动文件? 简单说,启动文件就是 STM32 单片机上电后执行的第一段代码。它通常是汇编写的 .s 文件,作用如下: ✅ 设置栈顶(给程序运行分配临时空间) ✅ 初始化中断向量表(告…

一、什么是 STM32 的启动文件?

简单说,启动文件就是 STM32 单片机上电后执行的第一段代码。它通常是汇编写的 .s 文件,作用如下:

✅ 设置栈顶(给程序运行分配临时空间)
✅ 初始化中断向量表(告诉 CPU 各类中断的处理函数地址)
✅ 处理全局变量的初始化(.data 和 .bss 段)
✅ 最终跳转到你的 main() 函数,开始运行主程序!

📌 大白话解释:STM32 上电后就像“刚醒的电脑”,启动文件就是它的 BIOS,负责开机、加载环境、把控制权交给你写的代码。


二、启动文件在哪?叫什么名字?

STM32 启动文件通常叫:

startup_stm32f103xb.s   // 对应 STM32F1 系列
startup_stm32h743xx.s   // 对应 STM32H7 系列

你可以在 STM32 工程中的 startup/ 文件夹或 Core/Startup 下找到它。

📌 文件名规律:

startup_ + 芯片型号 + .s


三、启动文件的核心结构解析(带注释+大白话)

下面我们以 STM32F1 系列为例,一步步讲清启动文件里的关键内容。


1⃣ 向量表定义(中断函数地址表)

 

.section  .isr_vector,"a",%progbits
g_pfnVectors:
    .word  _estack             // 栈顶地址
    .word  Reset_Handler       // 复位中断
    .word  NMI_Handler         // 非屏蔽中断
    .word  HardFault_Handler   // 硬错误中断
    ...

📌 大白话:这是 MCU 上电后看的第一张“导航地图”,告诉它:

  • 栈空间在哪里?(_estack)

  • 出问题后找谁处理?(各类中断函数)

  • 启动后从哪儿开始?(Reset_Handler)


2⃣ 默认中断处理函数(未定义时的兜底方案)

.weak NMI_Handler
.thumb_set NMI_Handler, Default_Handler

📌 大白话:就像备用钥匙一样,如果你没写 NMI_Handler() 函数,就默认跳到 Default_Handler,进入死循环防止程序乱跑。


3⃣ 复位处理函数 Reset_Handler(程序的真正起点)

Reset_Handler:
    LDR R0, =_estack
    MOV SP, R0                 // 设置栈顶

    // 初始化 .data 段(Flash → RAM)
    LDR R0, =_sdata
    LDR R1, =_edata
    LDR R2, =_sidata
CopyData:
    CMP R0, R1
    LDRLT R3, [R2], #4
    STRLT R3, [R0], #4
    BLT CopyData

    // 清零 .bss 段(RAM)
    LDR R0, =_sbss
    LDR R1, =_ebss
    MOV R2, #0
ZeroBss:
    CMP R0, R1
    STRLT R2, [R0], #4
    BLT ZeroBss

    BL SystemInit              // 初始化系统时钟
    BL __libc_init_array       // 初始化 C/C++ 环境
    BL main                    // 跳转到主函数

📌 大白话总结:

  • 🥄 装菜之前先摆盘子:复制 .data 段、清空 .bss 段

  • ⚙️ 开电前先搭电网:SystemInit 设置时钟

  • 🚪 进门后开始正事:跳转到你写的 main() 函数!


四、启动文件和链接脚本(.ld 文件)密不可分!

你在启动文件里看到的这些符号:

 

_estack, _sdata, _edata, _sidata, _sbss, _ebss

实际上是 链接脚本 .ld 文件定义的地址,比如:

 

_estack = 0x20005000;
_sdata = 0x20000000;
_edata = 0x20001000;
_sidata = 0x08004000;

🧠 启动文件 ≈ 动作执行者
📜 链接脚本 ≈ 指明地址的地图设计者


五、如何在 C 文件中使用或重写这些中断?

只需写对应名字的函数,就能自动覆盖默认的弱定义中断

void USART1_IRQHandler(void) {
// 自定义串口中断处理
}

🧩 C 文件自动“接管”中断处理,只要函数名匹配即可。


六、启动文件常见问题排查小贴士

问题类型

可能原因

排查建议

卡死在 Reset_Handler

栈地址错误、中断表错

检查 _estack 设置

main() 不执行

.data / .bss 段未初始化

检查 CopyData/ZeroBss 代码段

中断不响应

函数未定义或未启用

检查是否重定义函数且已使能

编译器报错找不到符号

启动文件用了链接脚本没定义的地址

对齐链接脚本与启动文件符号

七、建议小白这样学启动文件👇

  1. 用调试器打断点在 Reset_Handlermain() 入口

  2. 动手写最小裸机程序:只保留启动文件 + 一个 main()

  3. 对照 map 文件,理解 .data/.bss 的内存地址和大小

  4. 试着添加一个中断处理函数,观察是否自动生效


文章转载自:

http://EuT8lwcE.dtnjr.cn
http://W1N5Ma5r.dtnjr.cn
http://OlTHDQhE.dtnjr.cn
http://Bt6ybTan.dtnjr.cn
http://Syw46zJF.dtnjr.cn
http://jB27Ip94.dtnjr.cn
http://fRM7g8hM.dtnjr.cn
http://pLiQpaGm.dtnjr.cn
http://WnymO8Ok.dtnjr.cn
http://73xJ0gLE.dtnjr.cn
http://Fl6LSGKr.dtnjr.cn
http://wrTn4lD0.dtnjr.cn
http://9fMju4u1.dtnjr.cn
http://HA1h7C7d.dtnjr.cn
http://ljBhl2X2.dtnjr.cn
http://sFgysyP6.dtnjr.cn
http://NzQJJduO.dtnjr.cn
http://9d0j8Dox.dtnjr.cn
http://Prlj47GO.dtnjr.cn
http://opprVnOJ.dtnjr.cn
http://R0QahfbB.dtnjr.cn
http://RmOMEAYm.dtnjr.cn
http://4SbXdX0J.dtnjr.cn
http://4Px1nLzR.dtnjr.cn
http://0vwicLG3.dtnjr.cn
http://JGh2O3zt.dtnjr.cn
http://t83nvtys.dtnjr.cn
http://bA7AcCH7.dtnjr.cn
http://CvrsujKZ.dtnjr.cn
http://kGYZwBur.dtnjr.cn
http://www.dtcms.com/wzjs/645564.html

相关文章:

  • 自己编程做网站wordpress中文cms
  • 苏州专业高端网站建设企业怎么购买网站空间和域名
  • 做设计转钱网站外贸品牌网站制作
  • flash做网站谁有做任务网站
  • flash 3d 网站源码高端网站建设成都
  • 装饰公司网站开发成都十大传媒公司
  • 优化排名推广关键词seo搜索引擎优化教程
  • 做标志的网站广州市增城建设局网站
  • 上海紫博蓝网站北京建设有限公司信源官方网站
  • 怎么打开域名网站工业产品设计图片
  • 网站建设费一般是什么费用上海app软件开发
  • 摄影网站采用照片做宣传 版权费是多少上海集团有限公司
  • 永康网站建设zjyuxun电商网页设计网站
  • 做那种事情的网站怎么做国内网站吗
  • 做素材网站如何赚钱wordpress 获取用户
  • 代理分佣后台网站开发湖南房地产加盟网站建设
  • wordpress建站 评测关键词优化网站
  • 做网站业务好干吗仿百度 wordpress
  • 海安市建设局网站凉州区住房和城乡建设局网站
  • 网站开发机构vs2017网站开发组件
  • 张家港做网站的公司年报申报入口
  • 杭州高端网站建设公司自己做的网站项目面试
  • 连云港网站建设方案八大营销模式有哪几种
  • 南山网站公司定wordpress网盘引擎
  • 网站开发布局重庆ppt制作
  • m开头的网站建设公司电子商务网站建设需要
  • wordpress的菜单和页面跳转南京做网站优化
  • 网站数据分析指标个人网站备案经验
  • 响应式网站建设福州关于协会网站建设的建议
  • 360地图怎么添加地址南通网站优化