STM32使用CubeMx配置MDK工程只能下载一次程序的解决方案

一. 问题描述

最近在使用Cubemx配置STM32F1工程时发现只能下载一次程序,第二次下载程序就无法下载,Options for Target选项中Debug中显示No Device Connected(没有设备连接),使用的是这种ST_Link小模块。
在这里插入图片描述因为以前出现过线太长而无法连接设备的情况(血泪教训,使用SW四线模式下载程序线不能太长,超过60公分就很悬了),这次第一反应是线的问题,于是换了一根短线,还是不行。于是换一块板子,连接成功,下载了一次又不能连接了。于是判断肯定是设置的问题。

二. 解决办法

上网查了一下,果然遇到问题的不是我一个,总结一下方法。

  1. 在cubemx中System Core选项下点击SYS,将Debug模式选择为Serial Wire。如图所示
    在这里插入图片描述此时右侧的芯片引脚会多出SW的引脚设置
    在这里插入图片描述
  2. 点击生成工程(Generate Code)可以看到在main.c中的MX_GPIO_Init()中多了一行
__HAL_RCC_GPIOA_CLK_ENABLE();

HAL_MspInit()函数中多出一行

 __HAL_AFIO_REMAP_SWJ_NOJTAG();

很好理解,分别是打开了SW功能引脚(GPIOA)时钟和配置功能映射。在不使用Cubemx重新生成代码的情况下可以手动添加以上两行代码。

  1. 配置完成之后就可以无限次下载了。当然此时它已经不能下载了,不要慌,按住Reset键,点进去Options for Target选项中Debug中可以看到设备连接上了,点击download下载代码,迅速松开reset键,就可以下进去了。

猜你喜欢

转载自blog.csdn.net/qq_30267617/article/details/109465326