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

STM32八股【1】-----启动流程和startup文件理解

启动流程

知识点

  • MCU 上电复位。
  • MSP从向量表第0个地址读取一个32位(2字节)的值并保存,该值为栈顶地址
  • PC计数器从第1个地址读取一个两字节的值并保存,该值为程序入口,一般是Reset_Handler
  • 想了解FLASH地址映射可以看STM32八股【4】-----AHB地址映射
__Vectors       DCD     __initial_sp               ; Top of Stack
                DCD     Reset_Handler              ; Reset Handler
                DCD     NMI_Handler                ; NMI Handler
                DCD     HardFault_Handler          ; Hard Fault Handler
  • 执行Reset_Handler,初始化中断向量表。
    Reset_Handler为[WEAK],可以自定义修改。
Reset_Handler    PROC
                 EXPORT  Reset_Handler             [WEAK]
     IMPORT  __main
     IMPORT  SystemInit
                 LDR     R0, =SystemInit
                 BLX     R0
                 LDR     R0, =__main
                 BX      R0
                 ENDP

在Reset_Handler中执行:

  1. SystemInit():
    初始化系统时钟、PLL、外设时钟、Flash 延时等。
  2. C 运行时环境初始化:
    • 调用__main
    • 初始化 .data 段、具体来讲就是把FLASH已初始化的数据拷贝到RAM对应的.data段区域。
    • RAM .bss段未初始化的全部清零
    • 不熟悉FLASH和RAM构成的可以看STM32八股【3】------RAM和片上FLASH
  3. 进入 main():
    完成上述初始化后,调用 main() 进入用户程序。
  4. 程序运行,
    如果发生中断,CPU 根据矢量表跳转到对应中断服务函数 (xxx_IRQHandler) 处理。

问题

  • 请解释STM32微控制器的启动过程,从上电到用户主程序的执行,包括主堆栈指针(MSP)和程序计数器(PC)的初始化。

  • 在STM32的启动文件中,向量表的作用是什么?它通常位于存储器的哪个区域,为什么?

  • 启动文件中定义了堆栈和堆的大小。请解释它们在嵌入式系统中的作用,以及如何根据应用需求确定它们的大小。

  • 在启动文件中,Reset_Handler的作用是什么?它通常执行哪些关键任务来准备系统运行?

欢迎指错、交流和补充。

相关文章:

  • dify中飞书插件安装及授权
  • AI Agent设计模式 四种高层次模式以及更具体的九种模式
  • Docker安装教程详解
  • [每周一更]-(第137期):Go + Gin 实战:Docker Compose + Apache 反向代理全流程
  • Redis Lua脚本实现令牌桶限流算法
  • leetcode-27 移除元素(基础算法—双指针)
  • 【Node.js入门笔记9---path 模块】
  • 上海蒂正科技有限公司:技术驱动数字化,打造高端企业门户新标杆
  • 数组模拟邻接表 #图论
  • 递归陷阱:如何优雅地等待 props.parentRoute?
  • 使用Java实现Oracle表结构转换为PostgreSQL的示例方案(AI)
  • 前端对接生成式AI接口(类ChatGPT)问题汇总
  • MySQL-sql优化
  • 网络运维学习笔记(DeepSeek优化版) 021 HCIA-Datacom新增知识点03园区网典型组网架构及案例实战
  • 【Hbase】查看所有表
  • EMC整改案例:某网络机顶盒网口辐射
  • java-正则表达式-集合-泛型-注解-异常
  • 0-组合优化图神经网络的退火机器辅助学习(arxiv 25)(完)
  • 在 Windows 系统下,将 FFmpeg 编译为 .so 文件
  • Linux下JDK1.8安装配置
  • 铁路部门:确保沿线群众安全,焦柳铁路6个区段将陆续安装防护栅栏
  • 秦洪看盘|预期改善,或迎来新的增量资金
  • 言短意长|西湖大学首次“走出西湖”
  • 人民空军:网上出现的“运-20向外方运送物资”为不实消息
  • “犍陀罗艺术与亚洲文明”在浙大对外展出
  • 航行警告:渤海海峡黄海北部执行军事任务,禁止驶入