📄 lpc_timer.h
字号:
#ifndef __LPC_TIMER_H
#define __LPC_TIMER_H
/*************************************************************************
*
* Used with ICCARM and AARM.
*
* (c) Copyright IAR Systems 2003
*
* File name : LPC_Timer.h
* Description :
*
* History :
* 1. Date: July 08, 2004
* Author: Wilson Liu
* Description: Create the basic function
*
* 2. Date: August 12, 2004
* Author: Shawn Zhang
* Description: Re-write some API interface
*
* 3. Data : Oct 10, 2004
* Author : Stanimir Bonev
* Description : Modify some function and interface
*
* $Revision: 1.1 $
**************************************************************************/
#include <includes.h>
/* Timer Control register bit descriptions */
#define TCR_ENABLE_BIT 0
#define TCR_RESET_BIT 1
// The channel name which is used in matching, in fact they represent
// corresponding Match Register
#define CH_MAXNUM 4
#define CH0 0
#define CH1 1
#define CH2 2
#define CH3 3
// The channel name which is used in capturing, in fact they represent
// corresponding Capture Register
#define CPCH_MAXNUM 4
#define CPCH0 0
#define CPCH1 1
#define CPCH2 2
#define CPCH3 3
//The actions when matching
#define TimerAction_Interrupt 0x1
#define TimerAction_ResetTimer 0x2
#define TimerAction_StopTimer 0x4
//Interrupt source type
#define TIMERMR0Int 0x01
#define TIMERMR1Int 0x02
#define TIMERMR2Int 0x04
#define TIMERMR3Int 0x08
#define TIMERCR0Int 0x10
#define TIMERCR1Int 0x20
#define TIMERCR2Int 0x40
#define TIMERCR3Int 0x80
#define TIMERALLInt 0xFF
// TIMER Chanel def
typedef enum
{
TIMER0 = 0 ,
TIMER1
} LPC_TimerChanel_t;
// External Match Control Action Type
typedef enum
{
DONOTHING = 0 ,
SETTOLOW ,
SETTOHIGH ,
TOGGLE
} LPC_Timer_ExtAction_t;
// Capture Control Action Type
typedef enum
{
TimerCPTrigger_Rising = 1 ,
TimerCPTrigger_Falling
} LPC_Timer_CapureAction_t;
typedef struct
{
bool Enable;
unsigned char Action;
unsigned long TimeValue;
void ( * Fnpr )( void* );
void* FnprArg;
} LPC_Timer_MatchChannel_t;
typedef struct
{
bool Enable;
unsigned char TriggerType;
bool EnableInt;
void ( * Fnpr )( void* );
void* FnprArg;
long CPValue;
} LPC_Timer_CaptureChannel_t;
typedef struct
{
unsigned long Precision;
unsigned long Prescaler;
LPC_Timer_MatchChannel_t MatchCH[CH_MAXNUM];
LPC_Timer_CaptureChannel_t CaptureCH[CPCH_MAXNUM];
LPC_Timer_ExtAction_t ExtAction[CH_MAXNUM];
unsigned char ExtBitValue[CH_MAXNUM]; // low or high, only 1 bit
} LPC_Timer_Config_t;
/* Declare functions */
int TIMER_Init( LPC_TimerChanel_t DevNum , unsigned long precision );
int TIMER_Reset( LPC_TimerChanel_t DevNum );
int TIMER_Start( LPC_TimerChanel_t DevNum );
int TIMER_Stop( LPC_TimerChanel_t DevNum );
int TIMER_SetMatchAction( LPC_TimerChanel_t DevNum , unsigned int CHNum , unsigned int action ,
unsigned long TimeValue , void ( *Fnpr ) ( void* ) , void* FnprArg , LPC_Timer_ExtAction_t ExtAction );
int TIMER_GetTimerMatch( LPC_TimerChanel_t DevNum , unsigned int MRNum , unsigned int* pAction ,
unsigned int* pMatchValue );
int TIMER_GetTimerExternalMatch( LPC_TimerChanel_t DevNum , unsigned int MATNum , unsigned int* pAction ,
unsigned int* pExternalMatchValue );
int TIMER_SetCaptureAction( LPC_TimerChanel_t DevNum , unsigned char CPCHNum , unsigned char TriggerType ,
bool EnableInt , void ( *Fnpr ) ( void* ) , void* FnprArg );
int TIMER_GetTimerCapture( LPC_TimerChanel_t DevNum , unsigned int CRNum , unsigned int* pCaptureValue );
unsigned long TIMER_CheckIntType( LPC_TimerChanel_t DevNum );
unsigned long TIMER_ClearInt( LPC_TimerChanel_t DevNum , int IntType );
unsigned long TIMER_GetREGValue_CR( LPC_TimerChanel_t DevNum , int CRNum );
unsigned long TIMER_GetREGValue_TC( LPC_TimerChanel_t DevNum );
unsigned long TIMER_GetPrescaler( LPC_TimerChanel_t DevNum );
void TIMER0_ISR();
void TIMER1_ISR();
// Time defenition
#define sec_T0 *(SYS_GetFpclk()/TIMER_GetPrescaler(TIMER0))
#define msec_T0 *(SYS_GetFpclk()/(TIMER_GetPrescaler(TIMER0)*1000))
#define usec_T0 *(SYS_GetFpclk()/(TIMER_GetPrescaler(TIMER0)*1000000))
#define sec_T1 *(SYS_GetFpclk()/TIMER_GetPrescaler(TIMER1))
#define msec_T1 *(SYS_GetFpclk()/(TIMER_GetPrescaler(TIMER1)*1000))
#define usec_T1 *(SYS_GetFpclk()/(TIMER_GetPrescaler(TIMER1)*1000000))
#endif //__LPC_Timer_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -