⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 watchdog.c

📁 Rabbit 32Bit RTOS源代码
💻 C
字号:
/*********************************************************************
*                   Copyright (c) 2011-2012,李士伟
*                     All rights reserved.
*文 件 名:watchdog.c
*描    述:看门狗驱动源文件
*当前版本:V1.00
*作    者:李士伟
*创建日期:2012.01.25
**********************************************************************/
#include <drivers\lpc2103\target.h>
#include <drivers\lpc2103\watchdog.h>
#include <drivers\lpc2103\LPC2103.h>
#include <kernel\asm.h>
#include <kernel\time.h>
#include <kernel\flag.h>

/*********************************************************************
*函 数 名:WD_Start
*描    述:启动看门狗
*输入参数:T_overtime: 溢出周期(毫秒)
*          T_feedtime: 喂狗周期(毫秒)
*输出参数:无
*返 回 值:无
*注    意:
*          WDTV 计数频率
*          F_wdtv   = Fpclk / 4 (Hz)
*          T_overtime = WDTC / F_wdtv
*                     = WDTC / (Fpclk / 4) (S)
*                     = WDTC / (Fpclk / 4 ) * 1000 (ms)
*
*          WDTC  = T_overtime * (Fpclk / 4)/1000
*                = T_overtime * Fpclk /4000  (T_overtime 单位ms)
**********************************************************************/
void WD_Start(INT32U T_overtime, INT32U T_feedtime)
{
    if (T_feedtime > (T_overtime - (1000/OS_TICKS_PER_SECOND)))
    {
        return ;
    }
    WDTC = T_overtime * (Fpclk/4000);
    WDMOD = 0x03;
    WD_FeedDog();
    /* 注册并启动看门狗喂狗定时器 */
    API_StartTimer(API_AddTimer(WD_FeedDog,
                                T_feedtime / (1000/OS_TICKS_PER_SECOND)));

}

/*********************************************************************
*函 数 名:WD_FeedDong
*描    述:喂狗定时器
*输入参数:无
*输出参数:无
*返 回 值:无
*注    意:该函数在系统中被注册为定时器动作函数
**********************************************************************/
void WD_FeedDog(void)
{
    OS_ENTER_CRITICAL();
    WDFEED = 0xAA;
    WDFEED = 0x55;
    OS_EXIT_CRITICAL();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -