STM32单片机程序启动

本文详细介绍了STM32微控制器的启动配置机制,包括如何通过BOOT引脚设置不同的启动模式,以及这些模式下中断向量表的位置。具体探讨了从用户闪存、系统存储器和内置SRAM启动的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       ARM7和ARM9内核启动时从绝对地址0X00000000开始执行复位中断程序,即固定了复位后的起始地址,但中断向量表的位置是可变的。

       STM32内核则不同,M3内核规定起始地址必须存放栈顶地址,第二个地址必须是复位中断向量的入口地址,这样CPU复位后会自动从下一个32位地址取出复位中断向量的入口地址,PC就跳转到中断服务程序,所以M3是固定了中断向量表的位置而起始地址是可变的。 
       M3的中断向量表有三个位置,通过BOOT引脚进行启动设置。

       BOOT1=x BOOT0=0 从用户闪存启动,这是正常的工作模式。中断向量表定位于FLASH区,复PC=0x80000000. 
       BOOT1=0 BOOT0=1 从系统存储器启动(相当于厂家在存储器中固化了BOOTLOADER),这种模式启动的程序功能由厂家设置。 
       BOOT1=1 BOOT0=1 从内置SRAM启动,这种模式可以用于调试。这种模式下,中断向量表位于SRAM区,起始地址为0x20000000.复位为PC=0x20000000. 


所以,若电路板将BOOT引脚配置为BOOT1=X,BOOT0=0,则程序一定从0x80000000开始执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

spdian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值