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

📄 timer.c

📁 基于ARM和uC/OS-II实现的串口控制台
💻 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 + -