)
一、调试前基础配置必做1. 硬件接线JTAG/SWD通用1调试器J-Link/ST-LinkUSB插电脑安装官方驱动2接线GND共地、SWCLK、SWDIOSW两线JTAG则接TMS/TCK/TDI/TDO/RST3开发板独立供电不要共用调试器3.3V避免短路。2. Keil工程参数设置1. 点击工具栏魔术棒Options for Target2. Debug选项卡核心- 硬件调试J-Link/ST-Link右侧Use选择对应调试器- J-Link J-LINK/J-TRACE Cortex- ST-Link ST-Link Debugger- 点击【Settings】- Port选择SW推荐引脚少不要默认JTAG- 点击Auto Clk自动匹配通信速度下方能读出芯片ID即接线正常- 勾选 Run to main() 进入调试自动停在main函数3. Flash Download标签勾选 Program 、 Erase Full Chip 烧录程序到Flash。4. Target标签晶振Xtal(MHz)填写开发板实际晶振如8.0、12.0。3. 编译工程快捷键 F7 Build确保0错误0警告代码无语法问题。二、进入/退出调试模式- 启动调试 CtrlF5 或 Debug → Start/Stop Debug Session- 退出调试再次按 CtrlF5进入后代码出现黄色箭头代表下一条要执行的代码。三、核心调试操作快捷键1. 运行/暂停- F5 Run全速运行遇到断点自动停下- Stop暂停程序- RSTReset CPU芯片复位程序回到main从头执行2. 单步调试排查逻辑BUG最常用- F10 Step Over单步跳过不进入子函数日常首选- F11 Step Into单步进入进入自定义/库函数内部- CtrlF11 Step Out直接跳出当前函数回到调用处- CtrlF10 Run to Cursor直接运行到鼠标光标所在行3. 断点控制定点暂停- F9点击代码行左侧灰色区域添加/取消普通断点红点- 右键断点 → Breakpoint Properties条件断点如i50时暂停循环调试必备- CtrlShiftF9清除全部断点四、查看数据定位变量、内存、寄存器异常顶部菜单 View 调出窗口1. Watch窗口监控变量打开Watch1输入变量名如 adc_val 、 GPIOA-ODR 实时查看右键可切换十进制/十六进制显示。2. Registers寄存器窗口查看内核寄存器R0~R15、SP、PC排查底层硬件异常。3. Memory内存窗口输入地址0x20000000查看整片RAM数据适合串口缓存、数组排查。4. Call Stack调用栈查看函数调用层级程序卡死、死循环时快速定位卡死函数。5. Peripherals外设寄存器可直接查看GPIO、USART、ADC等外设寄存器实时值硬件调试神器。五、软件仿真无开发板纯电脑模拟1. 魔术棒 → Debug选项卡勾选 Use Simulator 2. Dialog DLL填 DARMSTM.DLL Parameter填芯片型号 -pSTM32F103C8 3. CtrlF5进入仿真支持逻辑分析仪观测IO电平、串口打印适合纯逻辑验证无法操作真实硬件。六、常见调试报错排查1. 找不到芯片、连接失败- 检查GND共地、SWDIO/SWCLK接线- Settings里切换SW模式降低通信速度- 重启调试器、重装驱动。2. 能识别芯片但下载失败- Flash Download勾选擦除整片关闭芯片读保护。3. 断点失效、程序跑飞- 关闭代码优化魔术棒C/C → Optimization选Level 0- 不要在中断函数断点全速运行。七、实用调试小技巧1. 鼠标悬停变量直接弹出当前数值2. 数组/指针直接在Watch输入数组名查看全部元素3. 调试串口打印添加ITM_SendChar代码在调试窗口输出日志4. 逻辑分析仪Logic Analyzer观测GPIO电平时序排查时序问题。