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

MCU 休眠死机彻底起不来?RTC 定时唤醒喂狗完美解决低功耗看门狗难题

简介

低功耗类的设备有一些MCU是没办法运行看门狗的,有一些是可以运行看门狗但没办法喂狗。
那么MCU进入低功耗模式下,看门狗不运行,如果在低功耗模式的时候一旦死机,软件就彻底崩溃了,就起不来了,这样风险就很大。

一、休眠状态,如何加看门狗?
我之前用过的一些单片机,像东软的8为单片机低功耗状态下需要关闭看门狗,唤醒的时候才可以运行,所以一般做法是进入低功耗之前先关闭看门狗,唤醒之后再开启看门狗,这种单片机设计就存在一定的风险,只能做取舍。
像ST的单片机低功耗模式下也可以运行看门狗,但是低功耗不能喂狗,所以采取的做法就是调用RTC时钟设定闹钟去唤醒设备执行喂狗,喂狗之后设备再次进入低功耗,这样设计的缺点是需要一直唤醒设备去喂狗,增加软件的复杂度和牺牲一点电量,优点是软件如果在休眠状态崩溃,会因为一直不唤醒喂狗而软件产生复位,增强软件的抗风险能力。
我之前有用过STM32G0系列的单片机就是采用这种设计模式,看门狗喂狗时间最大设置8秒,RTC闹钟设置为6秒,每间隔6秒设备就会自动唤醒去喂狗,喂狗之后设备立即进入休眠,功耗上的体现就是本来是200uA,会突然跳一下到几十mA,然后又稳定到200uA。

二、代码实现
代码实现也比较简单,RTC可以采用STM32CubeMX进行配置,然后在主循环里面执行喂狗的操作,代码如下:

三、总结
低功耗设备设计的时候一定要考虑软件的鲁棒性,有些设备运行的环境有射频、电机等复杂环境,虽然看起来死机可能性很小,但是一旦量大之后,就有可能会出现一些,所以,设计上考虑一定要严谨,从设计之初就要考虑软件加入一些防御性设计,来预防这种风险出现之后失控。

http://www.cnnetsun.cn/news/3361744.html

相关文章:

  • C++23协程与CUDA异步编程实战:构建高性能GPU计算框架
  • 锂电池组电压平衡方案:PIC18F86K90与MCP3202实战
  • FPGA 时钟资源详解
  • AI代理与记忆引擎:技术架构与工程实践
  • PbootCMS
  • Spine动画版本降级实战:从4.0到3.6的兼容性处理与路径动画迁移
  • Claude Code 100个真实案例 - 用AI做多租户SaaS系统(数据隔离+权限+计费)
  • Boost.Beast WebSocket控制帧详解:心跳、关闭与连接稳定性实战
  • TB67H480FNG与PIC18K40在电机控制中的黄金组合
  • 利用TensorFlow Datasets高效加载与预处理石头剪刀布图像数据
  • 元初混沌 6G 全域通感一体化体系架构 第一卷三阶第二十七篇 场象:小区全域电磁笼罩梯度分布规律
  • Counterfactual Reasoning for Steerable Pluralistic Value Alignment of Large Language Models
  • C++实现克里金插值:从空间统计原理到高性能工程实践
  • 传统生产管理弊端多,MES 能帮工厂解决哪些问题?
  • 【转盘决定吧】HarmonyOS ArkTS 实战:SpeechKit TextReader 朗读无声音的定位与修复
  • Rust 进前 10 之后,它到底在抢谁的饭碗
  • 百度图像识别API:从通用物体识别到垂直场景的实战应用
  • Vulkan-Hpp入门指南:现代C++图形开发从零到实战
  • 统信UOS Bash历史命令机制与优化实践
  • ROS 2 Adopters:一张可验证的工业落地生态地图
  • 【2013-12-17】C语言开发笔记:GDB
  • Apex英雄实战用YOLOv5目标识别工具包:含训练推理全流程与Windows MSDK接口
  • 【2013-12-11】C语言代码检测:splint的使用
  • Unity WebGL部署Tomcat报错:一个勾选解决Gzip压缩冲突
  • C++ CAD数据交换:libdxfrw库读写DXF/DWG文件实战指南
  • 终极指南:快速检测微信单向好友的完整解决方案
  • 经历多了年纪大了,人就会自大?
  • 超低功耗电源管理系统设计与优化实践
  • Halcon单目相机标定技术与工程实践详解
  • 一张图讲清楚:RAG 不是搜索框,而是给模型配资料员