单片机学习小组
直播中

莫循虎

7年用户 958经验值
私信 关注

STM32的启动模式有哪几种?

BOOT0是什么?
STM32的启动模式有哪几种?

回帖(1)

李四民

2022-2-10 11:33:35
1. 杂谈

最近感觉越来越口吃了,知道自己不会表达,但在熟人面前至少能侃侃而谈,现在在熟人面前也说不出话来,真让我苦恼,我觉得人还是不要给自己负面暗示,否则长此以往自己真的就不行了,想想阻碍你的门槛是什么,与其退缩,还不如去突破,所以还是多读书,多分享,嗯,要不开个读书专栏吧,推动自己下。
2. BOOT0是什么

前段时间调试STM32F031K6时,发现程序烧进去没有运行,查找原因,原来是BOOT0在硬件设计时被拉高了,拉低就可以正常烧录了。
那么BOOT0到底是什么鬼,为什么它会影响说stm32的烧录?
BOOT英文意思是“启动”。
那么STM32为什么需要启动设置呢?
因为程序是需要从main函数开始的,而stm32在上电复位后,是无法通过硬件找到main函数的入口地址的,都是从地址0x0000 0000 启动,所以设置启动的目的,就是找到main函数的入口地址。
BOOT0以及BOOT1(有的stm32型号有此引脚)决定了不同的启动地址或者说是启动模式,设置错了,stm32找不到正确的程序入口地址,自然就跑不起来。
3. STM32的启动模式

STM32的启动模式有三种:分别从主闪存存储器、内置SRAM和系统存储器启动。对于STM32F0xx,启动模式由BOOT0引脚以及BOOT配置位决定。

1)主闪存存储器启动
启动从主flash开始,地址为0x0800 0000。
用SWD/JTAG下载程序时,就是下载在主flash里面。烧录成功重启stm32后,程序从此地址启动,所以一般将boot0拉低。
2) 内置SRAM启动
启动从内置SRAM开始,地址为0x2000 0000。
SRAM由于没法保存数据,主要是用来调试的区域。
3) 系统存储器启动
由系统决定启动地址,不同的stm32型号对应的地址不同,STM32F03x对应0x1FFF EC00 。
系统存储区在芯片出厂时,厂家设置了bootloader区,此区域是ROM区无法被修改,启动程序由厂家设置。
在常规应用时,建议在硬件上将boot0直接拉低,方便下载程序。
参考资料
《rm0091-stm32f0x1stm32f0x2stm32f0x8-advanced armbased-32bit-mcus-stmicroelectronics》
举报

更多回帖

发帖
×
20
完善资料,
赚取积分