在嵌入式系统开发中,系统一旦“跑飞”,最令人担忧的并非软件缺陷,而是程序卡死且无法被及时察觉。此时,芯片内置的自我保护机制显得尤为关键。复位源与异常处理机制共同构成了确保系统可靠性的重要基石。本文将系统阐述它们的作用、原理及实际应用。
一、看门狗(Watchdog mer)
1. 原理
- 软件在规定时间内“喂狗”(重置看门狗计数器),系统继续运行。
- 如果程序死循环或跑飞,没有及时喂狗,看门狗触发复位,将 拉回初始状态。
示例: 独立看门狗 IWDG 喂狗代码
- #include"stm32f4xx_hal.h"
- IWDG_HandleTypeDef hiwdg;
- voidWatchdog_Init(void){
- hiwdg.Instance=IWDG;
- hiwdg.Init.Prescaler=IWDG_PRESCALER_64;
- hiwdg.Init.Relo=0x0FFF;// 最大计数
- HAL_IWDG_Init(&hiwdg);
- }
- voidFeed_Watchdog(void){
- HAL_IWDG_Refresh(&hiwdg);// 喂狗
- }
- intmain(void){
- HAL_Init();
- Watchdog_Init();
- while(1){
- // 主循环任务
- Feed_Watchdog();// 喂狗
- HAL_Delay(100);// 其他操作
- }
- }
2. 应用场景
- 防止程序死锁或跑飞
- 中的容错设计
- 、等高可靠性系统
3. 开发注意点
- 喂狗操作应放在主循环关键路径或任务完成后,而不是单纯在中断中定时喂,否则失去意义。
- 某些 MCU 提供独立看门狗(IWDG)与窗口看门狗(WWDG),后者要求“既不能太早喂,也不能太晚喂”,增加可靠性。
二、复位源(Reset Source)
复位让 MCU 回到确定的起点,触发来源多样:
- 上电复位(POR)
- 外部复位(Exrnal Reset)
- 看门狗复位
- 低电压复位(Brown-out Reset)
- 软件复位(Software Reset)
示例:软件复位 STM32
- #include"stm32f4xx_hal.h"
- voidSoftware_Reset(void){
- NVIC_SystemReset();// 触发软件复位
- }
复位意义
- 保证系统回到安全初始状态
- 避免在或逻辑异常下继续运行
- 给系统“第二次机会”
三、异常处理机制(Exception Handling)
即使有看门狗和复位,系统运行中仍可能遇到不可避免的异常,如访问非法地址、总线错误或中断嵌套冲突。
1. 异常来源
- 硬件异常:除零错误、非法指令、总线错误
- 系统异常:中断优先级冲突、栈溢出
- 软件异常:数组越界、指针错误
2. 处理方式
- 异常向量表:启动时建立,不同异常对应不同入口函数。
- 硬件保护:部分 MCU 自动保存现场,便于恢复。
- 软件处理:可编写异常处理函数(如HardFault_Handler),打印或记录错误信息。
示例:Cortex-M HardFault 处理
- voidHardFault_Handler(void){
- // 可以点亮 或输出日志
- while(1){
- // 死循环,等待复位或调试
- }
- }
3. 应用实践
- Cortex-M 系列常见异常:
- HardFault(硬错误)
- MemManage(存储器管理错误)
- BusFault(总线错误)
- UsageFault(用法错误)
- 异常处理函数中可加入死循环 + LED 闪烁或日志打印,方便调试。
四、三者关系
- 看门狗:主动防御程序“卡死”
- 复位源:系统“重启按钮”,确保安全状态
- 异常处理:运行中诊断问题
它们共同构成系统的三道保险:
- 1.异常处理发现问题
- 2.看门狗在关键时刻触发复位
- 3.复位源保证重启后系统稳定
总结
在开发中,功能跑通只是第一步,系统可靠性才是真正考验。
- 看门狗确保程序不会永久卡死
- 复位源保证系统能安全回到起点
- 异常处理机制帮助定位问题
三者配合,才能让在无人值守的环境下长期稳定运行。
上一篇:基于匠芯创D13x系列开发板的KunLun Pi探索分享
下一篇:RV1126B芯片WiFi STA模式通信技术解析
- 热门资源推荐
- 热门放大器推荐
- 边缘计算主机盒选购指南:五大核心指标解析
- Arm AGI CPU 更多细节:台积电 3nm 制程、Neoverse V3 微架构
- Arm AGI CPU 重磅发布:构筑代理式 AI 云时代的芯片基石
- Arm 拓展其计算平台矩阵,首次跨足芯片产品
- 阿里达摩院发布RISC-V CPU玄铁C950,首次原生支持千亿参数大模型
- 边缘 AI 加速的 Arm® Cortex® ‑M0+ MCU 如何为电子产品注入更强智能
- 阿里达摩院发布玄铁C950,打破全球RISC-V CPU性能纪录
- VPU中的“六边形战士”:安谋科技Arm China发布“玲珑”V560/V760 VPU IP
- 利用锚定可信平台模块(TPM)的FPGA构建人形机器人安全
- LTC2172CUKG-12、12 位、65Msps 低功耗四通道 ADC 的典型应用电路
- 使用 ROHM Semiconductor 的 BD5339 的参考设计
- 使用 Diodes Incorporated 的 PT8A3517 的参考设计
- LT5527 400MHz 至 3.7GHz 高信号电平下变频混频器的典型应用
- AD5340 并行接口、单电压输出、12 位 DAC 的典型应用
- 30W、-27V、5.8V、5.8V、15V、24V、33V交流转直流多路输出电源
- OP213FSZ-REEL7 低噪声运算放大器电压基准的典型应用
- LT3579/LT3579-1 演示板,升压 / 反相 DC/DC 转换器
- L7815A 光控制器稳压器的典型应用 (Vo(min) = Vxx + VBE)
- 具有关断功能的 LT1086CT-5 5V 稳压器的典型应用

非常经典的关于LLC的杨波博士论文
LMP8671MA/NOPB

XC6406PP60DL






京公网安备 11010802033920号