ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

10Pin ST-link与烧录

10Pin ST-link与烧录

最近做课程设计要用到STM32,到手了新的STM32F103C8T6最小系统板,但是不知道为什么,明明不管怎么用STM32都没有出现过连接不上或者无法烧录的现象,今天却频频发生,我甚至拿出来DAPlink以及旧的板子都无法连接,会出现

几种弹窗

1.设备不匹配(mismatch)

对于第一种,需要检测是否芯片型号不匹配等情况,如果型号匹配则需要考量PACK校验的问题——这有可能是由于同名的DFP包导致的设备定义冲突(此处不做探明原因的分析)。

2. 没有检测到STlink

对于第二种,是STlink没有连接或者没有安装相关的驱动

3.没有检测到DAPlink

对于第三种,是选择了DAPlink但是却插着STlink。当然每次在Options for target的device选项卡中换设备型号(芯片型号)的时候,都需要注意后续需要重新配置debug的link选项和setting选项——否则切换完默认使用的是Ulink,同时会默认不勾选自动复位启动。

4.无连接

对于第四种,如果接入的是STlink则需要考虑是否STlink用杜邦线连接的引脚是否错误,比如练到了另一排或者CLK和SWD两者连反了。这里说的是通常用杜邦线连STM32F103最小系统板的10P的STlink。

主要说一下mismatch的情况(第1种情况)

主要说一下第一种情况,也就是mismatch的情况。

Keil 默认开启Pack 校验,如果因为某些差异如容量等,就会报mismatch。

同时在连接的过程中,我发现,即使你通过能够连接上芯片(如果连接不上可能需要选择更低的频率,默认4000khz,或者修改模式和复位模式),但是仍旧可能被keil因为不匹配拒绝连接。

如何解决呢

最简单的解决方式是,在Debug选项卡STlink等调试器选择的右侧Setting(也可以从Utilities选项卡中的setting进入)中,顶部切到Pack页,取消勾选 Enable,这是解决 mismatch 的核心,让 Keil 不卡身份。

注意,每次切换设备型号或者是修改Link之后需要重新关一遍校验。

其他可能需要的检查和可尝试的操作

以下操作并非解决mismatch问题的核心,但是是在依旧无法解决情况下可以参考尝试的操作

  1. Target 页:Flash 算法确认为128K

  2. RAM Size 从默认0x1000改为0x5000(Start 保持0x20000000),防止内存溢出。
  3. 对默认 SWD 时钟降频

其他可以完成烧录的方法

使用如STM32CubeProgrammer这样的三方烧录软件。

在Options for target页面中的Output选项卡勾选“Create HEX File”

然后重新编译,生成的文件应该会在Objects目录下,使用第三方软件辅助烧录即可。

其他了解

当关闭PACK校验后,即使你的芯片型号真的不匹配也可以烧录,为了避免不必要的麻烦请确保芯片型号匹配。

返回列表