📄 wdt.c
字号:
/*
*******************************************************************************
* HEADER FILES
*******************************************************************************
*/
#include "44b0.h"
#include "dm.h"
WDTContextT wdt;
static void StartTimer (WDTContextT *ctxP, UINT16 count)
{
volatile WDTRegsT *wdtP = (WDTRegsT *)ctxP->regsP;
wdtP->WTCNT = 0xffff;
wdtP->WTDAT = 0xffff;
wdtP->WTCON |= (1<<5); // start
return;
}
static UINT16 StopTimer (WDTContextT *ctxP)
{
volatile WDTRegsT *wdtP = (WDTRegsT *)ctxP->regsP;
wdtP->WTCON &= ~(1<<5); // stop
return wdtP->WTCNT;
}
static void WaitTimer (WDTContextT *ctxP, UINT16 ticks)
{
volatile WDTRegsT *wdtP = (WDTRegsT *)ctxP->regsP;
wdtP->WTCNT = 0xffff;
wdtP->WTDAT = 0xffff;
wdtP->WTCON |= (1<<5); // start
while (ticks > (0xffff - wdtP->WTCNT));
wdtP->WTCON &= ~(1<<5); // stop
return;
}
static void SetupTimer (WDTContextT *ctxP, UINT8 prescale, UINT8 divider)
{
volatile WDTRegsT *wdtP = (WDTRegsT *)ctxP->regsP;
wdtP->WTCON = 0x0000;
wdtP->WTCON = (prescale << 8) | (divider << 3); // disable reset, disable interrupt
return;
}
/*
*******************************************************************************
* GLOBAL FUNCTIONS
*******************************************************************************
*/
void WDTSWInit (void)
{
WDTContextT *ctxP = &wdt;
ctxP->regsP = (WDTRegsT *)WDTREG_BASE;
ctxP->setup_fnp = (WDTSetup_T)SetupTimer;
ctxP->start_fnp = (WDTStart_T)StartTimer;
ctxP->stop_fnp = (WDTStop_T)StopTimer;
ctxP->wait_fnp = (WDTWait_T)WaitTimer;
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -