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

目录

前言

一、单片机常用调试手段

二、硬件层面常见问题

[三、软件代码高频 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 选项字节配置错误。
相关推荐
李永奉4 小时前
中科蓝讯SDK开发-BT893x 面条耳机连接vivo手机后连接APP端,最后手机端设置页面手动断开蓝牙连接,此时耳机端假断开
c语言·开发语言·嵌入式硬件·物联网·智能手机·电脑
大爱编程♡4 小时前
STM32-DMA
stm32·单片机·嵌入式硬件
云泽8085 小时前
STM32 USART 详解(三):硬件架构、内部寄存器与物理层收发原理
stm32·嵌入式硬件·硬件架构
天空'之城5 小时前
单片机基础核心知识点汇总(三十三)
数据库·单片机·嵌入式硬件
数字新视界7 小时前
机房动环监控的智能化管理与安全提升探索
嵌入式硬件·物联网·数据中心·数据中心基础设施管理·dcim管理系统
@嵌入式扫地僧8 小时前
TFLite Micro STM32/ESP32 开箱即用推理骨架 + INT8 量化脚本实战:零调试跑通端侧 AI 推理完整步骤
人工智能·嵌入式硬件·tinyml·端侧ai·tflite micro
自小吃多8 小时前
高云FPGA ModelSim中的仿真
笔记·嵌入式硬件·fpga开发
单片机仿真设计9 小时前
基于 STM32 的家庭环境监测与火灾报警灭火系统(Proteus 仿真)
stm32·单片机·嵌入式硬件·proteus·毕设
深圳市恒锐丰科技杨生9 小时前
EG4321 锂电池 CC‑CV 充电管理控制器|屹晶 EGmicro
嵌入式硬件·硬件工程
辰域电子9 小时前
STM32项目开源:智能万年历/智能闹钟设计(代码+原理图+仿真)
stm32·单片机·嵌入式硬件·开源·proteus