STM32F103的启动配置:从系统存储器启动的方法,其实是进入ISP芯片出厂后没有人能够修改或擦除,即它是一个ROM区系统存储器只是帮你通过ISP程序下载hex进去的

如题,谷歌百度一堆,以及查看数据手册,都知道STM32F103芯片靠BOOT0和BOOT1以及NVIC中断向量表的相关配置,可以做到3种启动模式:从内置用户FLASH启动、从SRAM内存启动、从系统存储器启动。

一般地球人都是用FLASH启动,又可以烧进去程序,又可以在线调试。或者用SRAM启动,可以调试小函数。
二者的启动方法在数据手册都有很容易的说明,谷歌百度也可以马上查到。

我想说的是,如何从系统存储器启动?如果是定义NVIC中断向量表,只能使用:
NVIC_SetVectorTable(0x20000000, 0x0);//SRAM启动(芯片内存)
NVIC_SetVectorTable(0x08000000, 0x0);//FLASH启动(芯片内置的用户闪存)

但是,没法用NVIC来写以下代码:
NVIC_SetVectorTable(0x1FFFF000, 0x0);//System启动(ISP串口下载,预置Bootloader)
因为不存在0x1FFFF000这个实参。

BOOT0和BOOT1我已经按照正确配置了,这个很简单,不必多说。

我也试过STM32_ISP下载程序,当时BOOT0=1,BOOT1=0,可以把hex程序文件下载进去,但是还是需要BOOT0和BOOT1都清零才可以运行程序,也就是说还是变成FLASH启动模式才能运行程序。

究竟怎样做才能在BOOT0=1,BOOT1=0的情况下,把程序烧进去,并且从系统存储器启动呢?

请高手赐教!

 回答

你说的这个所谓的系统存储器就是进入ISP
这个烧完之后必须返回到flash模式才能运行的,这个系统存储器的概念你理解错了,具体如下

1)用户闪存 = 芯片内置的Flash。
2)SRAM = 芯片内置的RAM区,就是内存啦。
3)系统存储器 = 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序。这个区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM区。

可见这个系统存储器只是帮你通过ISP程序下载hex进去的


下载的时候自动搞boot的方法你可以看看这个
http://www.daxia.com/bibis/moredata_1789880_32217.shtml

我以前在咱们坛子里看到过,不过找不到了,就找到这个,你可以自己找找,

https://www.amobbs.com/thread-5048816-1-1.html?_dsign=b2001043

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值