📄 timer.c
字号:
/*****************************************************************************/
/* timer.h: Philips LPC214x家族微控制器定义定时器的C文件 */
/* 作者:焦进星 */
/* 时间:2008年月1月22日 */
/* ARM初学 */
/*****************************************************************************/
#include "target.h"
/******************************************************************************
** Function name: Timer0Handler
**
** Descriptions: Timer/Counter 0 interrupt handler
** executes each 10ms @ 60 MHz CPU Clock
**
** parameters: None
** Returned value: None
**
******************************************************************************/
void Timer0_Exception(void)
{
T0IR = 1; /* clear interrupt flag MR0 */
OSTimeTick();
VICVectAddr = 0; /* Acknowledge Interrupt */
}
/******************************************************************************
** Function name: enable_timer
**
** Descriptions: Enable timer
**
** parameters: timer number: 0 or 1
** Returned value: None
**
******************************************************************************/
void enable_timer( BYTE timer_num )
{
if ( timer_num == 0 )
{
T0TCR = 1;
}
else
{
T1TCR = 1;
}
return;
}
/******************************************************************************
** Function name: disable_timer
**
** Descriptions: Disable timer
**
** parameters: timer number: 0 or 1
** Returned value: None
**
******************************************************************************/
void disable_timer( BYTE timer_num )
{
if ( timer_num == 0 )
{
T0TCR = 0;
}
else
{
T1TCR = 0;
}
return;
}
/******************************************************************************
** Function name: reset_timer
**
** Descriptions: Reset timer
**
** parameters: timer number: 0 or 1
** Returned value: None
**
******************************************************************************/
void reset_timer( BYTE timer_num )
{
DWORD regVal;
if ( timer_num == 0 )
{
regVal = T0TCR;
regVal |= 0x02; //reset
T0TCR = regVal;
}
else
{
regVal = T1TCR;
regVal |= 0x02; //reset
T1TCR = regVal;
}
return;
}
/******************************************************************************
** Function name: init_timer
**
** Descriptions: Initialize timer, set timer interval, reset timer,
** install timer interrupt handler
**
** parameters: None
** Returned value: true or false, if the interrupt handler can't be
** installed, return false.
**
******************************************************************************/
DWORD init_timer (void)
{
extern void Timer0Handler(void);
T0MR0 = INTERVAL_10MS; /* 10mSec = 150.000-1 counts */
T0MCR = 3; /* Interrupt and TC Reset when MR0 == TC*/
if ( install_irq( 0,TIMER0_INT, (void *)Timer0Handler ) == FALSE )
{
return (FALSE);
}
else
{
return (TRUE);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -