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

目录

前言

一、单片机常用调试手段

二、硬件层面常见问题

[三、软件代码高频 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 选项字节配置错误。
相关推荐
zcmodeltech1 小时前
新能源教学实训沙盘模型多系统协同控制系统设计:基于STM32与Modbus RTU的光伏-储能-智慧能源全场景联动方案
stm32·嵌入式硬件·能源·嵌入式实时数据库·多分类
优信电子2 小时前
STM32F103C8T6连接ESP-01S实现WiFi通信:TCP客户端开发实战(二)
stm32·嵌入式硬件·物联网·tcp/ip·esp8266·stm32f103c8t6·esp01/01s
智闲电子设计3 小时前
STM32 外扩 QSPI Flash 实战:字库和开机图存不下,就把 W25Q64 映射成内存直接读
网络·stm32·嵌入式硬件
嵌入式阿蔡3 小时前
逻辑分析仪实战:从波形一眼看出 UART/SPI/I2C 通信错在哪
网络·stm32·单片机·嵌入式硬件·嵌入式实时数据库
LCG元4 小时前
STM32H743串口DMA空闲中断不定长接收与D-Cache一致性踩坑实录
stm32·单片机·嵌入式硬件
LCG元4 小时前
STM32内部温度传感器供电漂移8℃的根因定位与VREFINT比例校准实测
stm32·单片机·嵌入式硬件
我是一棵无人问荆的小草19 小时前
stm32f103单片机的NVIC分组2介绍
stm32·单片机·嵌入式硬件
紫幽20 小时前
从 0 用 Vue 做屏并生成 LVGL 单片机代码(完整源码备忘)
前端·单片机
智者知已应修善业20 小时前
【51单片机数码管逐位显示1-8余位不亮】2024-10-23
c语言·经验分享·笔记·嵌入式硬件·51单片机