STM32 支持 3 种 BOOT 方式:
- Main Flash Memory
- System Memory
- Embedded SRAM
通常开发只需要让 STM32 从 Main Flash Memory 启动即可。一般 STM32 的 Main Flash Memory 的 Map 起始地址都是 0x0000000 (STM32 通过 ICode / DCode 总线访问)。
笔者使用是 STM32L151RET6,属于 Cat.5。所以想要设置成 Main Flash Memory 启动,只需要设置两点即可:
- Option bit nBFB2
- BOOT0
nBFB2 属于 STM32 中的 Option byte,用来配置产品信息。STM32 上电后可以通过读取 FLASH_OBR 中的 bit[23] 获取该值。默认为 0b1。
所以只要将 STM32 的专用 GPIO 口 BOOT0 接 GND,就能让 STM32 从 Main Flash Memory 启动。
启动后,CPU 从地址 0x0000000 获取栈顶指针值,从地址 0x0000004 开始执行代码。