【教程】小安派BW21-CBV-Kit——看门狗(Watchdog)

[复制链接]
查看26 | 回复0 | 4 天前 | 显示全部楼层 |阅读模式

用料

示例

前言

这是一个简单的看门狗定时器(WDT)示例,演示了看门狗 API 的用法。 有关看门狗的定义和工作原理,请参阅以下信息。

看门狗简介

看门狗定时器是一个硬件定时器,用于检测软件故障的发生,然后在编程周期结束时自动生成系统复位或看门狗中断。

通俗地说,想象一下微控制器陷入无穷循环的情况,或者微控制器在执行某些任务时挂起的情况。 通常的故障排除方法是按下复位键,跳出无穷循环。 但是,要一直按复位键实际上是不可能的,因此,嵌入在微控制器中的看门狗定时器可以帮助解决这种情况。

喂狗

如果你家里养了一条狗。 如果有一天你喂不饱它,它就会咬你! 同样,这也是看门狗定时器背后的工作逻辑。

image.png

在示例中,有 2 个任务包含一些重复运行的循环,其中一个称为 "Small_Task",另一个称为 "Big_Task"。 看门狗定时器已启用,其初始值比 "Small_Task "的总延迟时间(1 秒)长 5 秒,但比 "Big_Task "的总延迟时间(10 秒)短。

在成功的情况下,看门狗会在 5 秒内刷新/进给,但在失败的情况下,循环正在处理中,看门狗在 5 秒后仍未刷新,从而触发看门狗(狗叫),产生中断以重置处理器。 同样,看门狗定时器可保护微控制器免受挂起情况的影响。

实现流程

连接电路板,然后打开 Arduino IDE 中的示例:"文件" -> "示例" -> "AmebaWatchdog" -> "SimpleWDT"。

image.png

上传前需要进行 2 项设置。

默认名称 设定值 功能说明
AON_WDT_Enable 1 看门狗定时器设置为始终开启
AON_WDT_Enable 0 始终处于禁用状态
RUN_CALLBACK_IF_WATCHDOG_BARKS 1 在 "吠叫 "后执行 IRQ 功能
RUN_CALLBACK_IF_WATCHDOG_BARKS 0 禁用 中断

备注

当 "AON_WDT_Enable "设置为 "1 "时,不支持 IRQ。

image.png

成功上传示例代码后,打开串行监视器并按下复位按钮。 你会发现 "Small_Task "可以在 5 秒内刷新看门狗(在看门狗定时器中初始化)。 但是,"Big_Task "无法在 5 秒内刷新看门狗,看门狗会 "吠叫",然后微控制器复位。

image.png

当设置 #define RUN_CALLBACK_IF_WATCHDOG_BARKS (0) 的值为 "1"时,用于自定义 "my_watchdog_irq_handler"。 在处理程序中编写代码,以便在 "吠叫 "后执行。

image.png

用心做好保姆工作
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则