?? watchdog.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 + -