STM32开发常见错误及解决方法
STM32开发常见错误及解决方法
本文将介绍STM32开发过程中常见的四种错误及其解决方法,包括ST-LINK未检测到、目标设备未连接、非正版ST设备以及Flash下载失败等问题。
一、No ST-LINK detected
原因分析:
电脑没有检测到ST-LINK设备,通常是ST-LINK或电脑USB端口的问题。
解决方法:
确保ST-LINK已插入电脑USB口,然后打开电脑的设备管理器界面,查看“通用串行总线设备”列表是否出现“STM32 STLink”设备。
如果没有找到ST-LINK设备,可以重新拔插一下ST-LINK,同时观察设备管理器列表是否刷新。如果列表有刷新,请仔细查找刷新后有变动的地方;如果没有刷新,可能是ST-LINK损坏或电脑USB口损坏。找到列表刷新后对应的ST-LINK设备,如果出现在“其他设备”列表,并且图标带有黄色感叹号,则表示没有安装ST-LINK驱动。重新安装驱动,安装结束后拔插ST-LINK,等待设备出现在“通用串行总线设备”列表且无感叹号即可。ST-LINK驱动下载链接提取码:74ok
如果插上ST-LINK后,设备管理器识别到的是“未知USB设备(设备描述符请求失败)”,则通常表示ST-LINK已损坏。
二、No target connected
原因分析:
ST-LINK没有检测到STM32,这个问题的原因较多,可能是接线错误、ST-LINK固件版本不对,也可能是STM32禁用了调试端口或STM32已损坏等,需要逐个排查。
解决方法:
检查接线。不同款式的ST-LINK引脚排列可能不同,需要按照引脚丝印仔细检查接线。在ST-LINK的正面都会有引脚标识,对应引脚名称接线即可。接线时需要交叉,并不是依次顺序的。ST-LINK有两排引脚,一般是接在远离缺口的那一排,也就是下面这一排,一定要确保连接正确。
另外,也可以尝试将STM32的3V3和GND引脚接在ST-LINK第一排上的3.3V和GND上。接线接触不良也会导致这个问题,可以换几根线试一下。
STM32 ST-LINK
SWCLK / DCLK SWCLK
SWIO / DIO SWDIO
3V3 3.3V
GND GND更新ST-LINK固件。固件版本过低也会导致出现这个错误,固件更新操作步骤如下:
① 打开Keil软件的安装目录,如果不清楚安装目录,可以在桌面Keil软件图标右键,打开文件所在的位置,找到安装目录;
② 右键跳转到安装目录后,退回上一级文件夹,然后依次打开ARM,STLink文件夹,找到ST-LinkUpgrade.exe文件并打开;
③ 将ST-LINK插到电脑USB口,如果已经插上了,则需要重新拔插一下,并且最好把ST-LINK的线也全都拔掉。然后先点击Device Connect 按钮连接设备,连接成功后,再点击右下角Yes 按钮更新固件;
④ 固件更新成功后,再次重新拔插ST-LINK即可。解锁调试端口。如果是STM32禁用了调试端口,可以按住复位键不松手,然后点击下载按钮,点完下载按钮后要及时松开复位键。
使用串口(USB转TTL)烧录程序。烧录教程可参考:如何使用串口(USB转TTL)下载STM32单片机
如果以上方法都无法解决,那大概率是STM32已损坏,当然也无法直接排除ST-LINK损坏的可能。
三、Not a genuine ST Device! Abort connection
原因分析:
识别到的不是正版ST设备。
解决方法:
点击魔术棒→“Debug”→“Settings”;
打开“Pack”页面,将“Enable”选项取消选择,然后确定,OK,重新下载即可。
四、Flash Download failed - "Cortex-M3"
原因分析:
配置问题,STM32的Flash型号没有添加或没选对。
解决方法:
点击魔术棒→“Debug”→“Settings”→“Flash Download”,点击下边的“Add”按钮添加对应的Flash型号,如果是STM32F103C8T6芯片,就可以如图选择,其他型号的就需要另外选择,添加好后点确定,OK,然后重新下载即可。