使用STM32CubeMX来配置STM32F1时关于DEBUG的问题,是一个经常被问到的话题,所以我想在这里简单介绍一下相关内容。
首先,在大多数朋友的心中,他们都知道STM32CubeMX的好处,那就是它能够帮助你快速生成初始化代码工程。这无疑为开发带来了很大的便利。然而,对于一些初学者或者对底层知识不太了解的朋友来说,这也带来了一些困惑。
特别是当使用STM32CubeMX生成的代码出现问题时,如果你对底层知识不熟悉,可能会感到很头疼。
因此,在本文中,我将简单介绍关于DEBUG配置的问题,并且针对初学者解释一下问题产生的原因和可能的解决方案。
2起因
STM32CubeMX配置STM32F1系列MCU时,第一次能下载成功,但第二次,会出现如下错误:
这是什么错误?
没有连接到目标,也就是你的下载器(ST-LInk)是正常的,只是没有识别到你MCU。
这里推荐阅读专栏文章:ST-Link资料
3分析原因
可能很多初学者看到这个错误,第一反应是不是下载区器坏了,或者接线不良等问题。
其实不然,直接原因是STM32CubeMX这个工具初始化的代码,失能了DEBUG功能,也就是与ST-Link连接的SWCLK、SWDIO引脚不能作为DEBUG功能了。
STM32CubeMX默认配置:
调用代码****HAL_AFIO_REMAP_SWJ_DISABLE:
进一步分享,直到深入底层:
看到这里,相信大家都明白其中原因了。
但是,新的问题:为什么配置STM32其它系列(如STM32F4)不会出现在这个问题呢?
其实也是需要通过分析底层,答案就是STM32F1系列关于AFIO的控制器和其它系列有一定差异。
其它系列是通过一个系统配置控制器 (SYSCFG)来实现一些特殊功能,没有关于DBUGE的SWJ-CFG几个****位(上图)。
4出现不能下载,怎么解决?
如果出现文中说的,第一次下载之后,连接失败,解决的办法很多,这里列几点常见方法。
1.STM32CubeMX配置成对应模式
比如你下载器的S-Link,配置成SWD模式:
2.复位之后立刻连接
-
使用J-link带复位引脚模式 -
按着复位键->连接 -> 释放复位键
3.使用串口下载
有两种方式:
-
启动内嵌Boot,使用串口下载,请参看文章《STM32自举程序,你了解多少?》 -
IAP功能,有一段Bootloader程序,通过串口更新应用程序。
5拓展
STM32部分型号MCU不带JATG功能,比如STM32F0、STM32G0等。
以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !