1.stm32嵌入式系统IO信号输出不稳定

1.问题描述。

       在开发一个基于stm32的空气净化系统调试时候遇到了问题,stm32 IO口输出电平输出不稳定,系统使用一个大功率的5V稳压模供电,控制8个继电器,PM2.5四合一传感,测速传感器,10.1寸迪文串口屏幕,还有测试使用的打印串口。继电器就使用stm32普通IO口控制(高低电平控制断开和闭合),屏幕和传感器通过分别通过UART1,UART2串口与stm32通信。

      要实现通过串口屏幕关机,同时通过硬件按钮短按开机,长按关机,就想电脑关机功能那样。(开关与电源控制继电器并联通过,软件构成自锁结构,短按开关系统上电在main()函数中通过设置PA1IO口高电平让继电器控制电路闭合)。发现短按开关后继电器不能闭合,有时候其自动模式他继电器也不按程序执行。测量发现IO口高电平时候电压是1.5V,不是3.3V。

1.stm32嵌入式系统IO信号输出不稳定_第1张图片

2.问题分析

2.1检查继电器是否正常

直接给继电器控制线高电平都能正常闭合,所以继电器是没问题

2.2程端口初始化错误或者程序逻辑错误

分别检查控制继电器的IO初始化设备,设置为推挽输出,初始化电平为低电平;在控制继电器动作的条件语句中加入打印函数,通过穿上位机串口查看程序是否执行。以上都没有问题。

2.3稳压模块功率不够导致MCU供电不足

查看每个元器件功率和电源功率对比,电源的额定功率是足够的。通过电流表实测电流乘上电压,发现功率也是够

2.4 MCU受其他模块干扰导致IO输出电平不稳定

使用两个电源模块供电,其中MCU单独供电测试发现IO高电平输出正常。

3.经验总结

嵌入式开发,外围设备比较多,电路系统有频繁的高低电平变化和干扰时候,MCU单独供电边角合适。嵌入式系统调试比纯编程要麻烦一些,因为问题可能来自软件和硬件。遇到问题时候要两边凑,一个一个排除。软件调试最好使用串口,把重要程序执行过程打印出,可以查看程序执行打哪里,问题出在哪里。硬件首先检查接线,还有驱动文件和函数调用,供电是否稳定,还有外部电磁或者电源干扰。

4.*****@小绵羊嵌入式工作室@小骆驼AI工作室@*****

专注嵌入式开发和人工智能技术应用研究,欢迎交流学习

你可能感兴趣的:(stm32嵌入式开发)