之前上课的时候,老师要求把指定的固件刷到开发版里面,但奇怪的是,有的板子可以刷入,有的不行,有的电脑可以,有的却不行。按理说工程文件、STLink 驱动、开发版都是一样的,不应该存在这种问题才对。于是 Google 了一轮,记录一下。

报错信息

image-20240418205822581

image-20240418205833767

双连报错,很明显:

  • 芯片不对
  • 程序下载错误

芯片不对?

不可能,工程文件是开发版厂家提供的,板子上的芯片也确实是STM32F103RCT6,这和 Keil 上是一一对应的,应该不存在芯片不对的问题。

result

但错误信息都无限制的指向这一个问题——芯片错误,这就奇了怪了

芯片问题??????

根据论坛大佬和群友提供的信息,STLINK 烧录的时候,首先需要和芯片建立连接,而校验芯片是否正确,则是用 IDCODE 进行校验。

STM32F103 系列的 IDCODE 是0x1B10477,而我手上的是0x2BA01477,换句话说,我手上的这个芯片是仿制的,并非原版的

image-20240418213335664

但是参考大佬的文章 keil5 报错 Connection refused due to device mismatch! 的原因以及解决办法 -CSDN 博客 是把 CS 的 pack 包替换一下就行了,但我这里 pack 并不安装的上,这就比较玄学了

问题解决

最后发现,直接在 Debug Description 中,取消勾选 ENABLE 使能就能顺利写入了,之前为了 CS 的 pack 包折腾了很久都装不上,本以为是无解的问题,取消 ENABLE 就解决了(gg

个人估计可能还是玄学问题?或者是下载器的问题?但是我换了下载器后仍然下载不进。但按理说这个板子是学校统一采购的,应该不会使用仿制芯片才对,但是另一块 ST 官方的学习板又确实能把这个工程文件写进去,emmm,总之挺玄学的。

至少上课的时候是能写入工程文件了,就是还没试过 DEBUG,不知道怎么样

image-20240418214042902