RTOS中看门狗的使用

本文介绍RTOS中看门狗的使用。

1.原理

看门狗(Watch Dog Timer)是一个定时器,其定时输出连接到芯片的复位端。为提高系统的可靠性,使系统在异常情况下能自动复位,会使用看门狗。系统正常运行情况下,为了使看门狗不复位系统,需要在规定的时间内对看门狗定时器清零(俗称“喂狗”),若系统运行异常(如跑飞),无法在规定的时间内对看门狗定时器清零,从而导致看门狗定时器超时复位系统。

2.使用

1)非RTOS中使用

非RTOS中使用,应该使喂狗放置在任务的超循环中,并保证超循环的最长时间不超过看门狗定时器的溢出时间。参考代码如下:

int main(void)
{
	Hardware_Init();

    while (1)
    {
        Task1();
		Task2();
		Task3();
        WatchDog_Refresh();
    }

    return 0;
}

注意

不能在定时器中断中喂狗,因为即使程序跑飞,中断服务程序仍有可能会被执行。

2)RTOS中使用

一般情况下可以在RTOS的Idle任务的钩子函数关键任务里喂狗。因Idle任务始终会被调用,在其钩子函数中喂狗比较恰当。有些时候,为保证某些周期性关键任务必须被执行,也可将喂狗放置在其中。

以FreeRTOS为例,使能Idle钩子函数,配置(FreeRTOSConfig.h中)如下:

#define configUSE_IDLE_HOOK    1

使能后,空闲任务会自动调用如下函数,可将喂狗函数放置在其中,参考代码如下:

void vApplicationIdleHook( void )
{
    WatchDog_Refresh();
}

总结,本文介绍了RTOS中看门狗的使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值