单片机基础核心知识点汇总(四)

目录

前言

一、单片机常用调试手段

二、硬件层面常见问题

[三、软件代码高频 Bug](#三、软件代码高频 Bug)

[四、通信类问题通用排查(串口 / I2C/SPI)](#四、通信类问题通用排查(串口 / I2C/SPI))

五、通用排错流程(标准化排查步骤)

六、编译器与下载常见坑


前言

前面三篇完成单片机硬件、外设、中断进阶理论学习。本篇聚焦实际开发调试,讲开发常用调试手段、高频 BUG、排错流程,很多新手写代码能编译,但板子跑不起来,大部分问题都可以用本章思路定位解决。

一、单片机常用调试手段

  1. 串口打印调试
  • 最通用低成本调试方式,初始化 USART,把变量、状态打印到串口助手。
  • 适合看变量数值、程序运行到哪一步、传感器读取数据。
  • 缺点:占用串口资源,高速场景会影响时序。
  1. LED 指示灯调试
  • 最简调试,用 LED 闪烁、不同闪烁频率判断程序运行状态。
  • 例:正常运行 1s 闪烁一次;进入错误状态快闪。
  • 适合没有调试器、板子资源紧张场景。
  1. 断点调试(ST‑LINK/J‑LINK)
  • 硬件调试器,打断点,程序运行到断点直接停下。
  • 可以单步执行、查看寄存器、看 RAM 变量、查看堆栈。
  • 优势:可以看到程序内部真实状态,定位死循环、硬件异常。
  • 注意:部分外设时序会被断点干扰,不能完全等同于真实运行。
  1. 逻辑分析仪
  • 抓取 GPIO、I2C、SPI、USART 引脚真实电平波形。
  • 专门排查通信类问题:通信不上、数据乱码、时序不对。

二、硬件层面常见问题

  1. 最小系统故障
  • 现象:芯片完全不运行,下载程序失败。
  • 排查:电源电压是否正常、复位电平、晶振是否起振、下载器接线。
  1. GPIO 驱动问题
  • IO 输出没有反应:确认时钟开启、引脚模式配置,推挽 / 开漏选择错误。
  • 按键读值不稳定:缺少上 / 下拉电阻,外部电平浮空。
  1. 电源噪声
  • 现象:程序随机死机、外设乱跳。
  • 排查:电源滤波电容是否焊接,电机继电器等干扰源隔离。

三、软件代码高频 Bug

  1. 数组越界 写超出数组长度的地址,破坏堆栈、全局变量,程序随机死机,无固定复现条件,最难排查。

  2. 中断函数写复杂逻辑 中断里面写延时、大循环、打印大量数据。后果:中断长时间占用,其他中断得不到响应,系统卡顿丢数据。

原则:中断只做标记赋值,业务逻辑放到 while (1) 主循环。

  1. 忘记开启外设时钟 STM32 所有外设时钟默认关闭,不开启时钟,外设完全失效,寄存器读写无效。新手最高频错误。

  2. 变量没有加 volatile 中断里面修改的全局变量不加 volatile,编译器优化,主循环读取不到更新后的值。

  3. 堆栈溢出 局部变量定义过大,函数嵌套太深,堆栈耗尽直接跑飞死机。

四、通信类问题通用排查(串口 / I2C/SPI)

  1. 确认硬件接线:SDA/SCK/MOSI 等引脚有没有接反。
  2. 参数严格匹配:波特率、时钟极性、从设备地址。
  3. 电平匹配:3.3V 单片机不要直接接 5V 器件,会烧坏芯片。
  4. 优先用逻辑分析仪看波形,区分是硬件问题还是代码问题。

五、通用排错流程(标准化排查步骤)

  1. 确认硬件:电源、接线、器件焊接是否没问题。
  2. 最小工程验证:写最简点灯程序,确认芯片本身可以正常运行。
  3. 分层定位:先硬件,再底层外设,再业务逻辑。
  4. 缩小范围:注释掉部分代码,定位哪一段代码导致异常。
  5. 借助工具:串口打印、断点、逻辑分析仪,不要只靠猜。

六、编译器与下载常见坑

  1. 编译成功不等于代码可以正常运行,编译只检查语法,不检查逻辑、硬件配置。
  2. 下载失败:下载器驱动、BOOT 引脚、复位电路、芯片选型选错。
  3. 烧录后程序不运行:下载完没有复位,或者 Flash 选项字节配置错误。
相关推荐
QMCY_jason7 小时前
RK3588 usb摄像头 mipi摄像头 hdmi in 调试记录
单片机·嵌入式硬件
国科安芯7 小时前
四重证据,一条逻辑链:商业航天级微控制器MCU抗辐射验证方法学综述——以国科安芯AS32S601为例
人工智能·单片机·嵌入式硬件·mcu·安全·抗辐射
玄芯散人10 小时前
【元婴·100】STM32启动流程:从上电到main()经历了什么
stm32·单片机·嵌入式硬件
恒锐丰科技林技术员12 小时前
EG3525S 推挽半桥 PWM 控制芯片解析与工程应用
经验分享·嵌入式硬件·硬件工程
科芯创展14 小时前
XZ5129:单节锂电池供电36V升压LED恒流驱动芯片设计解析
stm32·单片机·嵌入式硬件
恒锐丰科技林技术员14 小时前
EG44273 低侧单通道栅极驱动芯片解析
经验分享·嵌入式硬件·硬件工程
✎ ﹏梦醒͜ღ҉繁华落℘14 小时前
单片机基础知识 --keil文件乱码,如何转换编码方式?
单片机·嵌入式硬件
创界工坊工作室15 小时前
41-基于STC89C52的避障循迹小车
stm32·单片机·嵌入式硬件·51单片机·proteus
weixin_4640780715 小时前
开关电源,反激中rcd电路快速选型
单片机·嵌入式硬件
HQB202615 小时前
EG1196S|屹晶微电子 120V 外置 MOS 异步降压 DC‑DC 控制器(短路锁存 + 电门锁延时)
嵌入式硬件·硬件工程