-
Boot1 Boot0
-
bootloader
-
中断向量表
-
启动流程
很多同学会使用STM32进行应用/驱动开发,一般开发就是从main()函数开始,绝大多数人没有关注或并不关注类似STM32的MCU是怎么从上电运行到mian()函数的,今天我就针对这部分的内容进行了一个大整合,帮助大家理解这个过程。
1、直接上电?不,上电前还暗藏玄机
也许你会说可不就是直接给电就行吗?我啥也没配置,就轻松进入main()函数了。
其实,在上电前有两个引脚对MCU的启动有些关键的影响:BOOT0和BOOT1,这两个引脚的电平状态直接影响了芯片在复位上电后从芯片的哪个位置开始执行代码。
Boot1=x Boot0=0 从内置闪存flash开始启动,这是正常的启动模式。
通过boot引脚设置可以将中断向量表定位于SRAM区,即起始地址为0x2000000,同时复位后PC指针位于0x2000000处;
STM32的内存flsh,一般我们使用JTAG或者SWD模式下载程序时,就是下载到这个里面,重启后也直接从这启动程序。
Boot1=0 Boot0=1 从系统存储器启动
通过boot引脚设置可以将中断向量表定位于内置Bootloader区
这是芯片一块特殊的区域,由ST出厂烧录预置的一段BootLoader,也就是我们常说的 ISP(In System Programing,在系统中编程 )程序;这是一块ROM,一旦出厂烧录即无法修改,只读&#