📄 mng_tmr.c
字号:
#include "sys_def.h"
#include "mng_tmr.h"
/*******************************************************************************
// 静态变量定义
*******************************************************************************/
static UINT uiTickCount;
//timer data
#define SIZE_TMR_QUEUE 20
static TimerNode_t aTimerBuffer[SIZE_TMR_QUEUE];
static TimerList_t stTimerList;
/*******************************************************************************
// 外部函数定义
*******************************************************************************/
void TmrMngInit()
{
//初始化软件
uiTickCount = 0;
for (int i = 0; i < SIZE_TMR_QUEUE-1; ++i){
aTimerBuffer[i].next = &aTimerBuffer[i + 1];
aTimerBuffer[i + 1].prev = &aTimerBuffer[i];
}
aTimerBuffer[SIZE_TMR_QUEUE-1].next = &stTimerList.stFreeHead;
aTimerBuffer[0].prev = &stTimerList.stFreeHead;
stTimerList.stFreeHead.next = &aTimerBuffer[0];
stTimerList.stFreeHead.prev = &aTimerBuffer[SIZE_TMR_QUEUE-1];
stTimerList.stTimerHead.next = &stTimerList.stTimerHead;
stTimerList.stTimerHead.prev = &stTimerList.stTimerHead;
//初始化硬件
WDTCTL = WDTPW + WDTTMSEL + WDTSSEL + WDTCNTCL; //Init WDT Timer
IFG1 &= ~WDTIFG;
IE1 |= WDTIE;
FLL_CTL0 |= DCOPLUS + XCAP18PF; //Init FLL Clock
SCFI0 |= FN_4;
SCFQCTL = 121;
do{
IFG1 &= ~OFIFG;
Delay(1);
}while ((IFG1 & OFIFG));
return;
}
UINT GetTickCount()
{
return uiTickCount;
}
__monitor int TimerProc()
{
++uiTickCount;
return OK;
}
/* 0xFFF4 Watchdog Timer */
#pragma vector=WDT_VECTOR
__interrupt void WDT(void)
{
if (OK == TimerProc()){
__bic_SR_register_on_exit(CPUOFF);
}
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -