嵌入式开发避坑指南

一、硬件与传感器相关问题

  1. MQ-2 烟雾传感器:AO/DO 混淆问题

    • 踩坑:一开始同时用 AO 和 DO,误以为 LM393 是 AO 的必须电路。
    • 解决:理清了 DO 是数字开关量(经 LM393 比较器),AO 是模拟电压量(直接接 ADC),两者是完全独立的两条路径。
  2. LM393 电压比较器工作原理理解不清

    • 踩坑:不知道 LM393 输出是开漏,需要上拉,且阈值要用电位器调节(模块上的蓝色旋钮)。
    • 解决:理解了它的核心作用是把连续模拟电压转换成数字电平,适合做 "阈值触发检测",而不是读浓度。
  3. IMX6ULL ADC 配置错误,读不到正确值

    • 踩坑:设备树里用了 GPIO 模式(0xb0),而不是 ADC 专用的浮空模式(0x9000),导致模拟通路没打开,采集值异常。
    • 解决:将 MX6UL_PAD_GPIO1_IO01__GPIO1_IO01 改为 MX6UL_PAD_GPIO1_IO01__ADC1_IN1,并配置 0x9000,才真正进入模拟高阻输入状态。
  4. I2C 传感器(LM75/BH1750)与 EEPROM(AT24C02)概念混淆

    • 踩坑:一开始分不清哪些是 "传感器",哪些是 "存储器"。
    • 解决:理清了 LM75/BH1750 是 I2C 接口的数字传感器,而 AT24C02 是 I2C 接口的 EEPROM,用于掉电保存数据,两者用途完全不同。

二、驱动与设备树配置问题

  1. IMX6ULL ADC 引脚复用配置错误,MUX 模式未切到 ADC

    • 踩坑:只改了 PAD_CTL(0x9000),但复用模式还是 GPIO,导致引脚工作在数字域,模拟功能无效。
    • 解决:明确了 IMX6ULL 引脚配置需要同时满足「复用模式(MUX)+ 电气配置(PAD_CTL)」,两者缺一不可。
  2. TSC 触摸屏控制器占用 IMX6ULL 的 ADC 引脚

    • 踩坑:内核启动时 TSC 优先占用了 ADC 引脚,导致 ADC 无法正常申请。
    • 解决:在设备树中禁用 TSC 节点,释放引脚资源,ADC 才能正常工作。
  3. FreeRTOS 消息队列创建失败,句柄为 NULL

    • 踩坑:定义了 osMessageQueueId_t sensor_queue 全局变量,但忘记调用 osMessageQueueNew() 创建队列,导致句柄为 0,任务间通信无法进行。
    • 解决:在任务创建前初始化队列,并配置足够的 FreeRTOS 堆大小,确保内存分配成功。

三、软件与调试相关问题

  1. 轮询与中断 / DMA 的概念混淆

    • 踩坑:不知道轮询、中断、DMA 三者的区别,以为轮询就是采集数据的唯一方式。
    • 解决:理解了轮询是 CPU 主动查询外设状态,中断是外设主动通知 CPU,DMA 是硬件直接搬运数据,三者各有适用场景。
  2. Keil 调试中 SystemClock_Config 函数挂死

    • 踩坑:时钟配置错误导致 MCU 挂死,调试器无法正常回溯调用栈,main 地址显示异常。
    • 解决:单步排查时钟初始化流程,确认晶振配置、PLL 锁定、时钟分频是否正确,避免死循环等待导致的挂死。
  3. FlyMcu 串口通信与烧录原理不清

    • 踩坑:误以为 FlyMcu 能直接让电脑和开发板通信,忽略了 USB 转 TTL 模块(CH340)的作用。
    • 解决:理清了 FlyMcu 只是电脑端的串口工具,真正的物理通信依赖 CH340 实现 USB ↔ TTL 电平转换,开发板的 UART 外设才是通信主体。
相关推荐
anew___2 小时前
GPIO 输入输出——按键、LED 与蜂鸣器
单片机·嵌入式硬件
xu_wenming7 小时前
嵌入式软件架构中的6种解耦艺术
c语言·驱动开发·嵌入式硬件·架构
sramdram7 小时前
国产32位mcu微控制器高速风筒方案
单片机·嵌入式硬件·32位mcu·mcu微控制器·国产32位mcu
单片机仿真设计7 小时前
【proteus仿真】基于STM32单片机直流电机控制设计(仿真图+程序)
stm32·单片机·嵌入式硬件·proteus·毕设
天空'之城7 小时前
单片机基础核心知识点汇总(十八)
单片机·嵌入式硬件
736c8 小时前
STM32-看门狗 10
stm32·单片机
luiyarch8 小时前
汽车电子ISO 26262功能安全系列(第17期):系统集成与测试——验证系统级安全机制
嵌入式硬件·安全·车载系统·汽车
DevHub11 小时前
CANopen 教程:STM32 实现 CANopen 从站,3 个回调替代手写对象字典
c语言·驱动开发·stm32·单片机·嵌入式硬件·mcu
单片机仿真设计13 小时前
【proteus仿真】基于 STM32 农业大棚巡检小车 (仿真图+程序)
stm32·单片机·嵌入式硬件·proteus·毕设
Hello_Damon_Nikola15 小时前
AiP9M161个人护理产品方案从设计到实现
单片机·嵌入式硬件