在设计STM32单片机时,该STM32单片机启动模式由两个引脚(BOOT0和BOOT1)决定,复位后第四个Sysclk上升沿锁存引脚值,直接影响芯片从哪里开始执行代码。可以说掌握了引脚配置逻辑,可以快速解决程序下载失败、无法启动等问题。

一、启动模式选择逻辑
主闪存启动(BOOT0=0,BOOT1任意)
默认模式,芯片从内置Flash的0x08000000地址启动
用户程序烧录在此区域,复位后直接执行主函数
系统存储器启动(BOOT0=1,BOOT1=0)
芯片内置Bootloader区域(0x1FFFF000)被映射到0x00000000
用于通过USART/USB/CAN等接口下载程序到Flash
内置SRAM启动(BOOT0=1,BOOT1=1)
SRAM的0x20000000地址被映射到0x00000000
代码掉电丢失,适合调试时快速验证逻辑
二、关键引脚注意事项
BOOT1的双用途陷阱
复位锁存前:决定启动模式
复位后:转为普通GPIO(如PB2在STM32F103中复用BOOT1)
操作建议:先配置启动模式,再操作BOOT1引脚
调试接口冲突
SWD接口占用PA13/PA14,JTAG占用更多引脚
若需复用为GPIO,需先禁用调试功能:
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);
5V容忍引脚限制
仅标有"FT"的引脚可承受5V输入(如部分ADC输入引脚)
非FT引脚接5V可能导致芯片损坏
三、启动流程核心步骤
复位锁存阶段
芯片复位后,SYSCLK前四个上升沿内完成BOOT引脚值采样
采样结果决定地址空间映射关系
向量表重映射
SRAM启动时需手动设置向量表偏移:
SCB->VTOR = 0x20000000; // 指向SRAM起始地址
Flash启动时默认从0x08000000取向量表
时钟初始化
不同启动模式需配置不同时钟源:
Flash启动:需设置Flash等待周期或启用ART加速器
SRAM启动:可直接使用CPU全速运行
四、常见问题解决
程序无法下载
检查BOOT0是否拉高(系统存储器模式)
确认SWD接口未被禁用
启动后跑飞
检查向量表偏移是否设置正确
确认SRAM启动时是否已加载有效代码
引脚冲突
使用STM32CubeMX自动检测复用冲突
优先保留关键外设引脚(如USART_TX/RX)
本文凡亿教育原创文章,转载请注明来源!

扫码关注








































