STM32中因I/O口复用导致后续烧录失败解决方法

本文介绍了解决STM32项目中因GPIOPinRemapConfig函数影响导致烧录失败的问题,通过Boot0引脚切换至Boot1模式,避开SWDIO/SWCLK被禁用的影响,烧录后恢复Boot0为0模式,确保正常运行。
摘要由CSDN通过智能技术生成

        在我们做STM32实际项目时,有时可能会因为I/O口的复用,例如使用PA13/PA14口时使用GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);函数将系统配置SWDIO/SWCLK覆盖掉,如图导致出现后续烧录失败的情况,这里博主给大家推荐一种工程中常用的办法解决这个问题。

        我们这里可以看到,在使用了GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);函数后导致后续烧录失败。这是因为上述函数将STM32中的SWCLK和SWDIO以及其他一些配置都关闭了,导致STM32无法与STLink连接,进而无法烧录,我们这里采用Boot0Boot1模式切换的方式解决。

        我们先来讲解决的步骤

                1.将STM32上的Boot0引脚从0模式切换到1模式,具体操作如图所示,Boot1引脚保持不变。

 

                2.将STLink重新插入电脑USB口,并将GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);函数注释掉,再次编译和烧录,此时我们可以看到代码已经成功烧录进STM32中,我们按复位键运行代码。

                3.最后再将Boot0引脚由1模式重新切换到0模式,完成操作后再次将STLink拔出重新插入,STM32就可以按照原来的样子正常运行啦

        原因:

        Boot引脚是用来控制STM32的启动模式的,所以切换Boot0引脚让STM32从主闪存存储器启动切换为系统存储器启动,又因为主闪存存储器启动需要读取传入信号的时钟周期,所以在SWT系统关闭时无法采取该方式烧入程序启动,而置Boot0切换为1引脚后则不需要读取时钟启动,故可以采取该方式成功烧入,但我们使用时一般还是接0引脚,这样能省下更多空间,而且传输效率高,下面是STM32说明书中截取的部分Boot说明内容:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PHeonix-blk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值