📄 timer.c
字号:
/*******************************************************************************
**
** File Name: timer.c
** Author: Zhoudan
** Last Modified: 2007-03-20
** Last Version: 0.5
** Environment: LPC2214/RVDSv2.2/uCOS-II2.52
** Descriptions: EXEC Timeout Timer
**
*******************************************************************************/
#include "config.h"
uint32 EXECTO = 10; /* EXEC默认超时值(min) */
const char *EXECTOBANNER = "\n\r\t\t\t\t------EXEC TIMEOUT------\
\n\r\t\t\t\tPress RETURN to contine";
/*******************************************************************************
* Function: Timer0_Exception()
* Description: Timer0中断处理
* Input: None
* Return: None
*******************************************************************************/
void Timer0_Exception(void)
{
T0IR = IR_MR0;
VICVectAddr = 0;
OSTimeTick();
}
/*******************************************************************************
* Function: Timer0Init()
* Description: Timer0初始化
* Input: None
* Return: None
*******************************************************************************/
void Timer0Init(void)
{
extern void Timer0_Handler(void);
VICIntEnClr = EN_IRQ_TIMER0;
T0IR = 0xFFFFFFFF;
T0TC = 0;
T0TCR = TIMER_EN;
T0MCR = TIMER_INT_MR0 | TIMER_RST_MR0;
T0MR0 = (Fpclk / OS_TICKS_PER_SEC);
*(&VICVectCntl0 + NIRQ_TIMER0) = EN_IRQ | IRQ_TIMER0;
*(&VICVectAddr0 + NIRQ_TIMER0) = (uint32)Timer0_Handler;
VICIntEnable = EN_IRQ_TIMER0;
}
/*******************************************************************************
* Function: SetTimer1()
* Description: 设置Timer1定时时间
* Input: hour 小时
* min 分钟
* Return: None
*******************************************************************************/
void SetTimer1(uint32 hour, uint32 min)
{
EXECTO = hour * 60 + min;
CLIConfigFile[CFG_CON_TO] = EXECTO;
T1MR0 = CLIConfigFile[CFG_CON_TO];
}
/*******************************************************************************
* Function: Init_Timer1()
* Description: Timer1初始化
* Input: None
* Return: None
*******************************************************************************/
void Init_Timer1(uint32 hour, uint32 min)
{
extern void Timer1_Handler(void);
VICIntEnClr = EN_IRQ_TIMER1;
T1PR = Fpclk * 60;
T1MCR = TIMER_INT_MR0 | TIMER_RST_MR0;
SetTimer1(hour, min);
*(&VICVectCntl0 + NIRQ_TIMER1) = EN_IRQ | IRQ_TIMER1;
*(&VICVectAddr0 + NIRQ_TIMER1) = (uint32)Timer1_Handler;
VICIntEnable = EN_IRQ_TIMER1;
}
/*******************************************************************************
* Function: Timer1_Exception()
* Description: Timer1中断处理
* Input: None
* Return: None
*******************************************************************************/
void Timer1_Exception(void)
{
uint8 i;
ChangCmdStatus(USER);
BufClean();
for(i = 0; i < 12; i++)
{
SendStr(BLANKROW);
}
SendStr(EXECTOBANNER);
for(i = 0; i < 12; i++)
{
SendStr(BLANKROW);
}
DisableTimer1();
T1IR = IR_MR0;
VICVectAddr = 0x00;
}
/*******************************************************************************
* Function: WDT_Feed()
* Description: 喂狗
* Input: None
* Return: None
*******************************************************************************/
void WDT_Feed(void)
{
OS_ENTER_CRITICAL();
WDFEED = 0xAA;
WDFEED = 0x55;
OS_EXIT_CRITICAL();
}
/*******************************************************************************
* Function: WDT_Init()
* Description: 看门狗初始化
* Input: ms 看门狗复位时间
* Return: None
*******************************************************************************/
void WDT_Init(uint32 ms)
{
WDTC = Fpclk * (ms / 1000);
WDMOD = 0x03;
WDFEED = 0xAA;
WDFEED = 0x55;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -