stm32的swd被设置成GPIO怎么下载程序

1.有时候在测试板子的功能时,不小心把SWD烧录口 设置成了普通GPIO 在单片机正常运行之后 SWD就是普通IO输出 在接上J-LINK Flash 之后 无法检测到单片机 ,不能进行正常烧程序连接。

在网上看到几种办法 最终试了还是不行,一种办法时在KEIL 中debug 设置在复位下烧录 通过多次测试 该方法失败  

首先应该把烧录进去的错误程序 进行擦除 再烧录进去正确的程序 MCU 就回归正常了 。

解决办法:再烧录器连接MCU之后 按住复位脚 这个时候可以正常连接到MCU 在 对MCU进行擦除的时候 放开复位脚 要注意顺序。 在复位状态 只能连接成功 解锁芯片。其他操作都时失败的。

<think>好的,我需要回答用户关于调用__HAL_AFIO_REMAP_SWJ_NOJTAG()函数后,PA15是否可以作为普通IO使用,同时不影响STLink调试和烧录的问题。首先,我需要查阅相关资料,确保回答正确。 根据用户提供的引用资料,引用[3]提到使用__HAL_AFIO_REMAP_SWJ_NOJTAG()可以禁用JTAG,保留SWD,这样PA15就可以作为普通IO。同时,引用[4]指出如果注释掉这个函数,可能需要手动复位才能运行程序,说明这个函数确实会影响引脚配置。 接下来,我需要确认PA15在默认情况下是JTAG的引脚,禁用JTAG后是否可以释放。根据STM32的引脚复用机制,PA15默认用于JTAG的JTDI功能。当调用__HAL_AFIO_REMAP_SWJ_NOJTAG()时,JTAG被禁用,但SWD仍然可用,因此PA15可以被重新配置GPIO。 另外,引用[5]提到配置为Serial Wire(即SWD)时,需要将复位脚拉低,但用户的问题是关于PA15的使用,所以重点在于正确配置AFIOGPIO时钟,并设置引脚模式。 最后,总结步骤:开启AFIO时钟,调用函数禁用JTAG,配置PA15为普通IO,同时STLink使用SWD(SWCLK和SWDIO),这样就不会干扰烧录和调试。</think>### 问题分析 调用`__HAL_AFIO_REMAP_SWJ_NOJTAG()`函数后,PA15引脚能否用作普通IO且不影响STLink调试/烧录,需从以下方面分析: 1. **SWJ复用功能的作用** - STM32的PA15默认复用为**JTAG的JTDI引脚**,若需将其用作普通IO,需禁用JTAG功能,保留SWD功能(STLink通过SWD协议调试)。 - `__HAL_AFIO_REMAP_SWJ_NOJTAG()`的作用是**禁用JTAG接,仅保留SWD调试功能**,此时PA15、PB3、PB4等JTAG相关引脚会被释放[^3][^4]。 2. **PA15的配置步骤** - **步骤1**: 开启AFIO时钟 ```c __HAL_RCC_AFIO_CLK_ENABLE(); // 必须启用AFIO时钟才能修改复用功能[^1] ``` - **步骤2**: 调用`__HAL_AFIO_REMAP_SWJ_NOJTAG()`禁用JTAG ```c __HAL_AFIO_REMAP_SWJ_NOJTAG(); // 仅保留SWD,PA15/PB3/PB4释放为普通IO[^2] ``` - **步骤3**: 配置PA15为普通GPIO ```c GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitStruct.Pin = GPIO_PIN_15; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 例如推挽输出 GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); ``` 3. **对STLink的影响** - STLink通过**SWDIO(PA13)和SWCLK(PA14)**与芯片通信,与PA15无关。禁用JTAG不会影响SWD调试和烧录功能[^5]。 - 若未正确配置PA15的复用功能,可能导致STLink连接失败或需手动复位。 ### 验证方法 1. **代码配置正确性** - 检查是否启用AFIO时钟和调用`__HAL_AFIO_REMAP_SWJ_NOJTAG()`。 - 确保PA15未与其他外设冲突(如定时器、SPI等)。 2. **硬件连接** - STLink需连接**SWDIO(PA13)、SWCLK(PA14)、GND、3.3V**,无需使用PA15。 - PA15可连接LED或其他外设测试功能。 3. **调试现象** - 若烧录程序无法运行,需检查PA15的GPIO模式是否与硬件电路匹配(如上拉/下拉电阻)。 - 若STLink无法识别,检查SWD是否被其他代码误关闭。 ### 总结 通过`__HAL_AFIO_REMAP_SWJ_NOJTAG()`禁用JTAG后,**PA15可安全用作普通IO**,且STLink的SWD调试/烧录功能不受影响。需注意以下两点: 1. 必须开启AFIO时钟并正确配置PA15的GPIO模式。 2. 避免操作与SWD相关的PA13/PA14引脚。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lmc123csdn

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

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

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

打赏作者

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

抵扣说明:

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

余额充值