|
如题,谷歌百度一堆,以及查看数据手册,都知道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的情况下,把程序烧进去,并且从系统存储器启动呢?
请高手赐教! |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|