当前位置: 首页 > news >正文

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.

http://www.dtcms.com/a/125265.html

相关文章:

  • 解决vcpkg使用VS2022报错问题
  • 【Kafka基础】监控与维护:动态配置管理,灵活调整集群行为
  • Transformer 训练:AutoModelForCausalLM,AutoModelForSequenceClassification
  • NO.90十六届蓝桥杯备战|动态规划-区间DP|回文字串|Treats for the Cows|石子合并|248(C++)
  • Prometheus实现负载均衡并将多个实例数据汇总到一个主Prometheus
  • 【JavaScript】错误处理与调试
  • 【antd + vue】Modal 对话框:修改弹窗标题样式、Modal.confirm自定义使用
  • 【愚公系列】《高效使用DeepSeek》066-纠纷解决话术
  • uniapp解决上架华为应用市场审核要求-监听权限的申请
  • Java Socket编程从零到实战详解
  • Docker 镜像、容器与数据卷的高效管理:最佳实践与自动化脚本20250411
  • 如何设置Ubuntu服务器版防火墙
  • C++ inline和define(宏)
  • DeepSeek的神经元革命:穿透搜索引擎算法的下一代内容基建
  • Redis 学习目标
  • O(n)复杂度实现寻找数组第k小的数(快速选择算法)
  • spring--整合Mybatis详解
  • 支持多格式且免费的图片转换工具推荐
  • 【Java实战】——手撕斐波那契数列
  • 成都国际数字影像产业园:以产业生态优势,驱动影像业务腾飞
  • PM2 完全指南:Node.js 应用后台启动、关闭与重启详解
  • ONVIF/RTSP/RTMP协议EasyCVR视频汇聚平台RTMP协议配置全攻略 | 直播推流实战教程
  • 蓝桥杯赛前题
  • VectorBT量化入门系列:第五章 VectorBT性能评估与分析
  • zerotier安装在旁路由实现异地局域网互访的设置方法
  • P8754 [蓝桥杯 2021 省 AB2] 完全平方数
  • 蓝桥杯比赛 python程序设计——封闭图形个数
  • 使用Lombok的@Slf4j和idea构建:找不到log符号-解决
  • ARP代理
  • 微硕WINSOK高性能MOS管WSD30L40DN33在PD快充中的应用