0
收藏
微博
微信
复制链接

要想STM32引脚启动,三步搞定!

2026-01-26 09:51
281

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

4.png

一、启动模式选择逻辑

主闪存启动(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)


本文凡亿教育原创文章,转载请注明来源!

登录后查看更多
0
评论 0
收藏
侵权举报
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。

热门评论0

相关文章

开班信息