完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
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》 |
|
|
|
只有小组成员才能发言,加入小组>>
3310 浏览 9 评论
2991 浏览 16 评论
3492 浏览 1 评论
9057 浏览 16 评论
4086 浏览 18 评论
1175浏览 3评论
603浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
596浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2333浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1894浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 10:30 , Processed in 1.149840 second(s), Total 80, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号