KEIL提示“No target connected”的解决方法(转载)

在使用STM32F051Discovery学习时,不小心将连接SWD总线上的两个端口配置为了输出,导致无法使用SWD仿真或下载程序。本文提供了解决方法,包括重启目标板、重新配置GPIO等步骤,确保正常进行程序下载和仿真。

原文链接:周勇的博客

在用STM32F051Disconvery学习时,配置GPIOA时,不小心将连接SWD总线上的两个端口都配置为了输出,这下惨了,就再也不能用SWD仿真或者下载程序了,解决方法如下:

1、先确认目标板上电。

2、先长按住目标板上的复位键,再点击 Settings,再松开目标板上的复位键。

3、此时KEIL打开Settings的设置对话框,请确认有红框圈中的内容后,再进行下一步。
KEIL提示“No target connected”的解决方法(原创) - 周勇 - 周勇的博客
4、将STM32F051Disconvery板断电,重新上电。
5、先长按STM32F051Disconvery的复位键,再点击仿真或者下载按钮,再松开复位键。
注:这里点仿真到松开复位键不是每一次都能成功,每次点了仿真键到松开复位键的时间每次都不同,在某一个点时,就可以进入仿真或者下载程序了。板子就恢复正常了。但需要注意的是,在程序里一定要避开对GPIO13\GPIO14的配置。

总结:
在程序中配置了GPIO13\GPIO14。
我用万用表测量目标板上的STM32F051R8T6的复位脚,在点击仿真时,有瞬间的电平变化,我分析应该是对目标板有复位的动作,但为什么GPIOA的配置状态没有复位呢?有一点没有搞懂。手册写有GPIOA_MODER复位后的值为:0x2800 0000,即将GPIO13\14配置为复用模式,但为什么在程序配置了GPIO13\14为输出,并且在目标芯片有复位的情况下也会引起SWD无法仿真、下载的问题。
KEIL提示“No target connected”的解决方法(原创) - 周勇 - 周勇的博客

在使用 ST-Link 进行 STM32 烧录时出现 "No target connected" 错误,可能由多种原因导致。以下是一些常见问题及其对应的解决方案: ### 1. 芯片供电问题 芯片供电不足可能导致 ST-Link 无法检测到目标设备。 - **解决办法**:确保芯片获得稳定的电源供应。可以通过额外的 USB 线或杜邦线为芯片供电,以排除供电不足的问题。 ### 2. 接线错误或接触不良 ST-Link 与 STM32 之间的连接不良也可能导致此问题。 - **解决办法**:检查并确保以下线路连接正确且牢固: - 3.3V 连接到 3.3V - GND 连接到 GND - SWDIO 连接到 SWDIO - SWCLK 连接到 SWCLK ### 3. SWD 引脚被占用或禁用 如果 SWD 引脚(SWDIO 和 SWCLK)被其他功能占用或被代码禁用,ST-Link 将无法与芯片通信。 - **解决办法**: - **按住复位键烧录**:在点击下载按钮的同时按住复位键,并在点击后立即松开复位键。这样可以在程序运行到占用 SWD 引脚的代码之前完成烧录。 - **拉高 BOOT0**:将 BOOT0 引脚拉高,使芯片从系统存储器或 SRAM 启动,而不是运行 Flash 中的程序,从而避免 SWD 引脚被占用。烧录完成后将 BOOT0 拉低即可恢复正常运行。 - **检查代码中是否禁用了 SWJ 调试功能**:在 `stm32f1xx_hal_msp.c` 文件的 `HAL_MspInit()` 函数中,确保没有调用 `__HAL_AFIO_REMAP_SWJ_DISABLE();` 这条语句。如果有,请将其删除。 ### 4. 引脚复用问题 如果使用的 GPIO 引脚与 SWD 引脚复用,可能会导致烧录失败。 - **解决办法**:检查代码中是否对 SWD 相关引脚进行了复用。如果是,请更改这些引脚的配置,避免与 SWD 功能冲突。 ### 5. 编译器或烧录文件问题 有时编译器文件校验未通过,或者烧录文件本身存在问题,也可能导致无法与芯片通信。 - **解决办法**:尝试替换当前的编译器文件,重新导入正确的文件进行烧录。 ### 6. 硬件问题 如果以上方法都无法解决问题,可能是硬件本身存在故障。 - **解决办法**:检查芯片是否损坏,或者尝试使用另一块开发板进行测试。 ### 示例代码 如果你使用的是 HAL 库开发,可以检查 `stm32f1xx_hal_msp.c` 文件中是否禁用了 SWJ 调试功能。如果存在以下代码,请将其删除: ```c void HAL_MspInit(void) { // 其他初始化代码... // 禁用 SWJ 调试功能的代码 __HAL_AFIO_REMAP_SWJ_DISABLE(); // 删除这一行 } ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值