STM32单片机的启动流程

STM32 的启动过程主要分为以下几个阶段:

1. 硬件复位

        当 STM32 上电或发生复位事件(如按下复位按键、看门狗复位等)时,硬件系统会进入复位状态。此时,芯片内部的各类寄存器被设置为复位默认值,时钟处于停止或初始状态,为启动做准备。

2. 选择启动模式

STM32 通过BOOT0和BOOT1引脚的电平组合来确定启动模式,常见启动模式有:

1.从用户闪存启动:BOOT0 = 0,BOOT1 = 0 。这是最常用模式,用户程序存储在内部闪存中,芯片从这里读取代码并执行,适合正常运行阶段。

2.从系统存储器启动:BOOT0 = 1,BOOT1 = 0 。芯片从系统存储器启动,这里固化了厂商的 Bootloader 程序,可用于通过串口等方式下载用户程序到内部闪存,用于程序烧录更新。

3.从内置 SRAM 启动:BOOT0 = 1,BOOT1 = 1 。芯片从内部 SRAM 启动,可用于调试,断电后 SRAM 数据丢失,一般不用于正式运行。

3. 执行启动代码

1.向量表初始化:启动时,首先从指定启动地址(依据启动模式确定)读取向量表。向量表包含了中断向量地址,如复位中断、外部中断等,为中断处理做准备。

2.初始化系统时钟:配置系统时钟源(如 HSI、HSE 等)、设置分频系数等,确定系统运行时钟频率,这是芯片正常运行的基础。

3.初始化变量:将数据段(已初始化的全局变量和静态变量)从 Flash 搬运到 RAM 中,将 BSS 段(未初始化的全局变量和静态变量)清零。

4. 跳转到用户代码

完成上述初始化后,程序跳转到用户代码的入口地址(一般是main函数),开始执行用户编写的应用程序代码,进入正常工作阶段。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值