MCU如何查看系统有没有卡死

**前言:**在我们调试单片机的时候,经常会遇到系统非预期运行的状况。造成系统卡死的原因有很多,主要有:野指针,数组越界,死锁,还有一些while写入的一些逻辑错误。本文就如何排查这些问题,来编写此文。

一、单片机卡死如何排查

1.可以在系统调试窗口添加,总的u32类型的数据,如果对应的数据老是循环复位,则认为出现了系统卡死的问题。

2.系统初始化时,用硬件去表示

比如每次系统在刚启动时,亮一会儿绿灯,再亮一会儿黄灯,或者控制继电器,开关等等从物理上去感受有没有发生卡死

二、软件卡死

这种情况相对来说比较难排查,特别是死锁。软件能正常跑,时钟也在跟着继续跳,尤其是多线程操作。

①需要检查你的代码逻辑

1.单一线程里面不要写两个阻塞等待在里面,比如一个事件集等待,再弄一个信号量等待

2.少用while和goto,switch..case尽量少用。

3.良好的数据结构封装,和函数接口定义。

②标准化协议

比如modbus按照协议去写

三、硬件问题

①比如某个模块,需要有一个唤醒的引脚,比如先高电平,后低电平来唤醒模块。

某厂的wifi模块

②LAN模块,在tcp监听的时候,切换收发切换

③其他与收发相关的通信模块

④缓冲区不够,环形数组不够长,http报文,

⑤模块性能问题,发送500,实际接收300字节等问题

结语

单片机调试需要有耐心,pationce is the key of life.

相关推荐
ivy159868377152 小时前
芯锦科技 HP9116 QC3+多协议USB快充接口芯片
网络·单片机·嵌入式硬件·5g·p2p
FreakStudio7 小时前
ESP32居然能当 DNS 服务器用?内含NCSI欺骗和DNS劫持实现
python·单片机·嵌入式·面向对象·并行计算·电子diy
LXY_BUAA7 小时前
《嵌入式操作系统》_使用GPIOLIB编写驱动_添加驱动到内核中_20260328
驱动开发·嵌入式硬件
liwulin050611 小时前
【ESP32-S3】通过ROS2使用YDLIDAR X2进行SLAM、自主导航方案选择
单片机·嵌入式硬件
是翔仔呐12 小时前
第11章 显示外设驱动:I2C协议OLED屏、SPI协议LCD屏字符/图片/中文显示
c语言·开发语言·stm32·单片机·嵌入式硬件·学习·gitee
-凌凌漆-14 小时前
【嵌入式】FreeRTOS串口等待vTaskDelay()
嵌入式硬件
小昭在路上……15 小时前
GPIO端口引脚(位域)打包技巧笔记
单片机·嵌入式硬件
是翔仔呐15 小时前
第13章 SPI通信协议全解:底层时序、4种工作模式与W25Qxx Flash芯片读写实战
c语言·开发语言·stm32·单片机·嵌入式硬件·学习·gitee
悠哉悠哉愿意15 小时前
【单片机复习笔记】第十六届省赛复盘
笔记·单片机·嵌入式硬件
IT方大同15 小时前
RT_thread(RTOS实时操作系统)线程的创建与切换
c语言·开发语言·嵌入式硬件