keil5下载程序后提示“internal command error”

在 MDK-ARM v5.23 上用 ST-LINK V2 向 STM32F0 下载程序,提示“internal command error”,导致无法再访问 STM32F0 。

现象

选择 Flash/Download 向目标板下载程序,在 Build Output Window 显示信息如下:
load " xxxx.axf"
Erase Done // 完成擦除
Programming Done // 完成下载
Verify OK // 通过校验
Application running … // 运行用户程序
Internal command error // 出错

解决过程

在网上查找资料,总归都与复位有关。

  1. 在 Flash 菜单下有 Configure Flash Tools… 项,打开 Debug 标签后点击使用的调试器类型后的 Setting… 按钮,其中的 Debug 标签页下的 Connect & Reset Options 一栏有Connect 选项,选 Normal (正常连接) 或 with Pre-reset (先复位再连接) 或 under Reset (复位中连接)均无效果,因为我的目标板上没有引出复位端子,因而 ST-LINK V2 上的 RST 端不能连接到目标板上。
  2. 手动将 STM32 复位,复位后立即点击 STM32 ST-LINK Utility 中的 Target/Connect 即可通讯。擦除目标 STM32 的Flash,重新下载,现象依旧。
  3. 怀疑编写的程序有问题,采用逐段注释之法,几乎只剩 STM32CubeMX 构建的框架,现象仍在。说明不是我加入的代码有问题,而是在 STM32CubeMX 配置阶段就有问题了。

错误

重新检查 STM32CubeMX 配置 ,发现 PA13…14 作为无用引脚配置成了 GPIO_Analog,而实际上要连接 ST-LINK V2。

改正

打开 STM32CubeMX 工程,在引脚图中将 PA13 设为 SYS_SWDIO , PA14 设为SYS_SWCLK。( STM32CubeMX 会自动勾选 Pinout/SYS/Debug Serial Wire。)
用 STM32CubeMX 重新产生(配置)代码、用 MDK-ARM 编译、对 STM32 编程后,未见提示 “internal command error” 。

你可能感兴趣的:(ARM)