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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值