一. 问题描述
最近在使用Cubemx配置STM32F1工程时发现只能下载一次程序,第二次下载程序就无法下载,Options for Target选项中Debug中显示No Device Connected(没有设备连接),使用的是这种ST_Link小模块。
因为以前出现过线太长而无法连接设备的情况(血泪教训,使用SW四线模式下载程序线不能太长,超过60公分就很悬了),这次第一反应是线的问题,于是换了一根短线,还是不行。于是换一块板子,连接成功,下载了一次又不能连接了。于是判断肯定是设置的问题。
二. 解决办法
上网查了一下,果然遇到问题的不是我一个,总结一下方法。
- 在cubemx中System Core选项下点击SYS,将Debug模式选择为Serial Wire。如图所示
此时右侧的芯片引脚会多出SW的引脚设置
- 点击生成工程(Generate Code)可以看到在main.c中的MX_GPIO_Init()中多了一行
__HAL_RCC_GPIOA_CLK_ENABLE();
HAL_MspInit()函数中多出一行
__HAL_AFIO_REMAP_SWJ_NOJTAG();
很好理解,分别是打开了SW功能引脚(GPIOA)时钟和配置功能映射。在不使用Cubemx重新生成代码的情况下可以手动添加以上两行代码。
- 配置完成之后就可以无限次下载了。当然此时它已经不能下载了,不要慌,按住Reset键,点进去Options for Target选项中Debug中可以看到设备连接上了,点击download下载代码,迅速松开reset键,就可以下进去了。