Keil MDK 5.40:STM32 工程编译 + 调试完整教程


一、编译前必须检查的3个关键配置(不检查必报错)

在点编译之前,先确认这3项,90%的编译错误都能避免:

1. 勾选生成HEX文件(烧录必备)

  1. 点击工具栏上的魔法棒图标(Options for Target)
  2. 切换到 Output 标签
  3. 勾选 Create HEX File
  4. 建议勾选 Browse Information(方便调试跳转)

2. 芯片型号正确

魔法棒 → Target → 确认芯片与你开发板一致(如STM32F103C8)

3. 头文件路径已添加(最重要)

魔法棒 → C/C++Include Paths

必须把固件库头文件、工程头文件全部加进来,否则报"头文件找不到"。


二、STM32工程编译:3个按钮,一次学会

Keil编译只有3个常用按钮,位置在顶部工具栏:

1. 编译(Build)

快捷键:F7

只编译修改过的文件,速度最快,日常开发用这个。

2. 重新编译全部(Rebuild)

快捷键:Ctrl + F7

全工程重新编译,修改配置/换芯片后必须用这个。

3. 翻译(Translate)

只编译当前打开的文件,快速检查语法错误。


三、编译结果怎么看?

编译信息在底部 Build Output 窗口:

1. 编译成功

显示:

复制代码
0 Error, 0 Warning

复制代码
0 Error, x Warning

警告可以不管,错误必须解决。

2. 常见错误(新手必看)

  • not find xxx.h → 头文件路径没加
  • undefined reference → 缺少.c文件,或函数没定义
  • syntax error → 少分号、括号不匹配
  • stack overflow → 栈空间太小

双击错误信息,自动跳转到出错行,直接修改。


编译成功后,就可以进调试模式了。

调试前准备

  1. 用ST-Link连接开发板:SWD接口(SWDIO + SWCLK + GND + 3.3V)
  2. 开发板供电正常
  3. 驱动已安装(电脑能识别ST-Link)

五、进入调试模式(一步一步)

1. 配置调试器

  1. 点击魔法棒
  2. 切换到 Debug 标签
  3. 右上角选择:
    • ST-Link Debugger(最常用)
    • 或 J-Link
  4. 点击 Settings
  5. SW Device 栏是否显示你的STM32芯片
    ✅ 显示:连接正常
    ❌ 不显示:接线/供电/驱动问题

2. 进入调试模式

点击工具栏 Debug / Start Debug 按钮

快捷键:Ctrl + F5

进入后界面会变:多了寄存器、命令窗口、断点行。


六、调试最常用的6个功能(工作只用到这些)

1. 运行 / 暂停

  • 运行:F5
  • 暂停:Ctrl + Pause

2. 单步执行(逐行跑)

  • F11:单步进入函数(进函数内部)
  • F10:单步跳过函数(不进函数)

3. 断点(最实用)

点击代码行号左边空白处 → 出现红圆点 = 断点

程序运行到这里会自动停下。

4. 查看变量

鼠标直接放在变量上,就能看到当前值。

5. 查看寄存器

菜单:
Peripherals → 选择外设

  • GPIO
  • UART
  • ADC
  • TIM
    ...
    可实时看引脚状态、串口数据。

6. 查看内存数据

View → Watch & Call Stack Window

可以实时监控变量、数组、结构体。


七、退出调试模式

点击调试栏的 Stop 按钮

快捷键:Ctrl + F5

退出后回到正常编辑界面。


相关推荐
小马学嵌入式~2 小时前
linux开发深度学习-时钟
linux·arm开发·嵌入式硬件·学习
LCG元3 小时前
STM32嵌入式开发:基于STM32F103的智能语音识别系统
stm32·嵌入式硬件·语音识别
项目題供诗3 小时前
51单片机入门-直流电机(十四)
单片机·嵌入式硬件·51单片机
安庆平.Я3 小时前
STM32——FreeRTOS - 任务创建和删除 ~ 静态方法
stm32·单片机·嵌入式硬件
蒙塔基的钢蛋儿4 小时前
告别内存泄露与空指针:用C#与.NET 10开启STM32H7高性能单片机开发新纪元
stm32·c#·.net
悠哉悠哉愿意4 小时前
【单片机学习笔记】第十一届省赛复盘
笔记·单片机·嵌入式硬件·学习
学嵌入式的小杨同学4 小时前
STM32 进阶封神之路(二十七):MQTT 深度解析 —— 从协议原理到 OneNET 云平台接入(底层逻辑 + AT 指令开发)
stm32·单片机·嵌入式硬件·mcu·硬件架构·pcb·嵌入式实时数据库
DLGXY5 小时前
STM32(二十九)——读写、擦除FLASH
前端·stm32·嵌入式硬件
風清掦5 小时前
【江科大STM32学习笔记-09】USART串口协议 - 9.2 USART串口数据包
笔记·stm32·单片机·嵌入式硬件·学习