欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

STM32 SWD 只能下载一次的问题

程序员文章站 2022-03-23 22:46:44
Author:果果小师弟 电子信息专业在读研究生有一点思考,有一点想法,有一点理性!定个小小目标,努力成为习惯!在最美的年华遇见更好的自己!CSDN@果果小师弟,CSDN首发,果果原创个人主页的地址为: ???? 果果小师弟的个人小站 ????市面常见的STM32核心板有很多,以STM32F103c8t6核心板为例,实物如下图:在核心板的使用过程中,常见的问题是只能通过SWD方式下载1次程序,第2次便会报错,提示找不到处理器。简单的解决办法是:调整BOOT0/1,使用串口ISP全片擦除,...

Author:果果小师弟 电子信息专业在读研究生
有一点思考,有一点想法,有一点理性!
定个小小目标,努力成为习惯!在最美的年华遇见更好的自己!
CSDN@果果小师弟,CSDN首发,果果原创
个人主页的地址为: ???? 果果小师弟的个人小站 ????

市面常见的STM32核心板有很多,以STM32F103c8t6核心板为例,实物如下图:
STM32 SWD 只能下载一次的问题
在核心板的使用过程中,常见的问题是只能通过SWD方式下载1次程序,第2次便会报错,提示找不到处理器。

简单的解决办法是:

调整BOOT0/1,使用串口ISP全片擦除,再恢复BOOT,重新上电即可下载;
调整BOOT0/1,按Reset,使用SWD下载,还原BOOT0/1;
有些板子也可以通过持续按住reset键实现下载。

但上述并不是我们想要的。具体是哪里出了问题呢?

真正的解决办法是:
在使用STM32CubeMX生成项目工程时,需要关注一项系统配置,设置好Debug模式,此时可以看到,右侧的芯片GPIO预览图,增加了SWDIO和SWCLK的指示。
STM32 SWD 只能下载一次的问题
此时再用keil打开新生成的工程,即可无限次下载和Debug了。

设置了SYS的Debug模式为Serial Wire模式,到底产生了哪些不同呢?

实际对比,我们发现共有两处:

  • 1 main.c文件的static void MX_GPIO_Init(void)函数中,增加了__HAL_RCC_GPIOA_CLK_ENABLE();这里很好理解,因为SWD下载方式用的引脚是PA13和PA14
  • 2.stm32f1xx_hal_msp.c文件的大概第77行左右,没有打开“Serial Wire”时,该行是__HAL_AFIO_REMAP_SWJ_DISABLE();,打开了“Serial Wire”是,该行是__HAL_AFIO_REMAP_SWJ_NOJTAG();

综上所述,完全可以再不用重新配置CubeMX的情况下,通过修改上述两处代码,解决只能下载一次的问题。

STM32 SWD 只能下载一次的问题
STM32 SWD 只能下载一次的问题


好书不厌百回读,熟读自知其中意。将学习成为习惯,用知识改变命运,用博客见证成长,用行动证明努力。
如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!
听说 ???? 点赞 ???? 的人运气不会太差,每一天都会元气满满呦!^ _ ^ ❤️ ❤️ ❤️
码字不易,大家的支持就是我坚持下去的动力。点赞后不要忘了???? 关注 ????我哦!

更多精彩内容请前往 果果小师弟的微信公众号


如果以上内容有任何错误或者不准确的地方,欢迎在下面 ???? 留个言。或者你有更好的想法,欢迎一起交流学习~~~
STM32 SWD 只能下载一次的问题

本文地址:https://blog.csdn.net/qq_39400113/article/details/109274700

相关标签: STM32Cube