真.从“零”搞 VSCode+STM32CubeMx+C <2>调试+烧录

目录

前言

准备工作

Daplink连接

调试配置(cortex-debug)

烧录配置

坑点


前言

昨天有惊无险的构建了一个简单的闪灯程序,今天来挑战下调试+烧录,看看有什么坑。

准备工作

Daplink连接

  • 接线,如下

Daplink 单片机

TCK/CK ----- SWCLK

TMS/IO ----- SWIO

3.3v ----- 3.3v

GND ----- GND

  • 插上电脑,直接会识别(我的是windows10)

调试配置(cortex-debug)

  • 需要提前安装好cortex-debug插件,并添加launch.json配置文件,这里需要注意.cfg要配置成符合自己单片机的,文件在openocd的"openocd\scripts\target"路径下
  • 插件不会帮助你安装openocd需要自己下载,并配置环境变量,配置完之后,务必关闭VSCode,再重新打开
  • 配置完成后,就可以直接点击上图中左上方的运行按钮,程序会自动烧录到单片机中,并可执行断点调试。

烧录配置

  • 如果不需要调试,那直接配如下所述的就可以了
  • 点击开发工具右上方的烧录按钮,即可完成烧录

异常解决

  • 今天相对比较顺利,遇到两个问题,一是VSCode始终读不到配置好的openocd的环境变量,重启多次后可以了;二是调式报错以及无法烧录程序,这个问题比较刁钻,多种报错信息:
cpp 复制代码
Output radix now set to decimal 10, hex a, octal 12.
Input radix now set to decimal 10, hex a, octal 12.
0x0800025e in HAL_MspInit () at ./Core/Src/stm32f1xx_hal_msp.c:77
77	  __HAL_AFIO_REMAP_SWJ_DISABLE();
Program stopped, probably due to a reset and/or halt issued by debugger
[stm32f1x.cpu] halted due to debug-request, current mode: Thread 
xPSR: 0x01000000 pc: 0x0800016c msp: 0x20000660
[stm32f1x.cpu] halted due to breakpoint, current mode: Thread 
xPSR: 0x01000000 pc: 0x08000c34 msp: 0x20005000
Error connecting DP: cannot read IDR

Program
 stopped.
0x00000000 in ?? ()
cpp 复制代码
Error: Error connecting DP: cannot read IDR
Error: [stm32f1x.cpu] Polling failed, trying to reexamine
Error: [stm32f1x.cpu] Examination failed
Error: [stm32f1x.cpu] Examination failed, GDB will be halted. Polling again in 300ms
Error: Error connecting DP: cannot read IDR
Error: Failed to read memory and, additionally, failed to find out where
cpp 复制代码
Error: Error connecting DP: cannot read IDR

解决:

原来是STM32CubeMx生成代码的时候,有一行禁止调试的代码:

注释掉!即可!重新构建。

  • 但我们之前的程序已经烧录,怎么办?考研手速的时候到了!用单片机上的Reset按钮,按住,点烧录,看到成功连接OCD后立刻松开,便可以正常烧录了。
  • 由于这行代码是STM32CubeMx生成的,下次有什么引脚变化,还得用他生成,那么就需要直接一下,让它不要生成,如下:

后记

又是有惊无险的一通瞎操作,接下来要开始进入此次旅程的核心 → 用Make编译出bin文件,并烧录到单片机中。

相关推荐
广药门徒6 小时前
虚拟机联网20260725
嵌入式硬件
2601_951644326 小时前
C语言二级备考指南
c语言·编程基础·编译环境·二级考试·题库选择
国产化创客7 小时前
Kindle 嵌入式交叉开发环境
嵌入式硬件·智能硬件
szxinmai主板定制专家9 小时前
RK3568+FPGA高速并行采集|半导体探针测试设备多通道同步数据采集系统设计
人工智能·嵌入式硬件·计算机视觉·fpga开发
日拱一卒——功不唐捐11 小时前
红黑树删除(C语言)
c语言·数据结构
Dlrb121112 小时前
ARM---I2C协议时序详解以及IMX6ULL使用I2C协议与AT24C02,LM75A芯片通信详解与示例代码
嵌入式硬件·arm·lm75a·i2c协议·at24c02·i2c时序
周洲083014 小时前
STM32独立/窗口看门狗完整配置|防止程序跑飞死机、异常复位
stm32·单片机·嵌入式硬件
论迹复利14 小时前
多平台移植 BTBLE Stack 的思路与踩坑实战——从 Ceva IP 到厂商适配层的迁移指南
嵌入式硬件·物联网·架构
ziguo112215 小时前
C/C++ 错误处理全解:从 errno 到 C++ 异常
linux·c语言·c++·windows·visual studio
CPETW15 小时前
企业版配套软件介绍 ---- USB TO SPI_ (Excel)-Microwire
网络·科技·单片机·嵌入式硬件·电子