ST-Link下载STM32程序跟BOOT0有关系的解决方法

本文讨论了STM32开发中,BOOT0状态对ST-Link下载程序的影响,特别指出当BOOT0=0且JTAG/SWD功能被重定义为GPIO时,会导致下载问题。解决方法包括关闭JTAG/SWD功能以及使用STM32ST-LINKUtility恢复出厂设置。
摘要由CSDN通过智能技术生成

首先明确, ST-Link下载STM32程序, 跟BOOT0的状态是没有任何关系的!

本文的使用条件是在boot0=1时, ST-Link可以正常下载程序, 但是当BOOT0=0时,  在Keil中查看ST-Link的状态为No Target Connected, 而此时当按住STM32的复位按钮时, 重新查看ST-Link的状态就是在线的, 造成这个问题的根本原因就是PA13的状态.

STM32默认会打开JTAG功能或者SWD功能, 所以与JTAG和SWD功能相关的引脚会被占用, 如果在开发过程中把这些功能引脚给重定义了, 即相关引脚当做GPIO口用了, 同时也已经将程序烧录到了STM32中, 这就造成了再次使用keil通过ST-Link烧录程序时, 上位机要通过SW的状态判断下位机状态, 但是SW引脚已经被重定义了这个情况. 此时如果关掉程序中的重定义PA13的相关语句, 再重新下载, 就会发现BOOT0=0时, 也可以下载程序了.

以我自己程序中为例, 我写的关闭JATG和SWD功能的语句是这样的:


	//先把JTAG的功能关了, 才能正常使用原来JTAG占用的IO口
	//这个功能关了以后, BOOT0=0的情况下, 就不能使用ST-Link下载了
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
	GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);

另外, 在网上寻求此问题的解决方案时, 发现有用STM32 ST-LINK Utility擦除STM32程序的解决方法, 原文中说STM32被"写保护"了, 本人不反驳, 但是其最终的原理就是让STM32恢复到了出厂状态, 让STM32默认打开了JTAG和SWD功能.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值