📄 timer.h
字号:
/************************************************************************************
* Public header file for the Timer driver.
*
* Author(s): B04839
*
* (c) Copyright 2006, Freescale, Inc. All rights reserved.
*
* No part of this document must be reproduced in any form - including copied,
* transcribed, printed or by any electronic means - without specific written
* permission from Freescale.
*
Revision history:
date Author Comments
---------- ---------------------- -------
03.07.2006 B04839 Created
************************************************************************************/
#ifndef _TIMER_H_
#define _TIMER_H_
#include "Platform.h"
/************************************************************************************
*************************************************************************************
* Public macros
*************************************************************************************
************************************************************************************/
#define CHANNEL_OFFSET 0x05
#define CHANNEL_MASK 0x03
/*write value to register macros*/
#define SetComp1Val(tmrNumber, val) ((TmrRegs_t *)(MBAR_TMR + (((tmrNumber) & CHANNEL_MASK) << CHANNEL_OFFSET)))->Comp1 = (val)
#define SetComp2Val(tmrNumber, val) ((TmrRegs_t *)(MBAR_TMR + (((tmrNumber) & CHANNEL_MASK) << CHANNEL_OFFSET)))->Comp2 = (val)
#define SetCaptureVal(tmrNumber, val) ((TmrRegs_t *)(MBAR_TMR + (((tmrNumber) & CHANNEL_MASK) << CHANNEL_OFFSET)))->Capt = (val)
#define SetLoadVal(tmrNumber, val) ((TmrRegs_t *)(MBAR_TMR + (((tmrNumber) & CHANNEL_MASK) << CHANNEL_OFFSET)))->Load = (val)
#define SetHoldVal(tmrNumber, val) ((TmrRegs_t *)(MBAR_TMR + (((tmrNumber) & CHANNEL_MASK) << CHANNEL_OFFSET)))->Hold = (val)
#define SetCntrVal(tmrNumber, val) ((TmrRegs_t *)(MBAR_TMR + (((tmrNumber) & CHANNEL_MASK) << CHANNEL_OFFSET)))->Cntr = (val)
#define SetCompLoad1Val(tmrNumber, val) ((TmrRegs_t *)(MBAR_TMR + (((tmrNumber) & CHANNEL_MASK) << CHANNEL_OFFSET)))->CmpLd1 = (val)
#define SetCompLoad2Val(tmrNumber, val) ((TmrRegs_t *)(MBAR_TMR + (((tmrNumber) & CHANNEL_MASK) << CHANNEL_OFFSET)))->CmpLd2 = (val)
/*read value from registers macros*/
#define GetComp1Val(tmrNumber) (((TmrRegs_t *)(MBAR_TMR + (((tmrNumber) & CHANNEL_MASK) << CHANNEL_OFFSET)))->Comp1)
#define GetComp2Val(tmrNumber) (((TmrRegs_t *)(MBAR_TMR + (((tmrNumber) & CHANNEL_MASK) << CHANNEL_OFFSET)))->Comp2)
#define GetCaptureVal(tmrNumber) (((TmrRegs_t *)(MBAR_TMR + (((tmrNumber) & CHANNEL_MASK) << CHANNEL_OFFSET)))->Capt)
#define GetLoadVal(tmrNumber) (((TmrRegs_t *)(MBAR_TMR + (((tmrNumber) & CHANNEL_MASK) << CHANNEL_OFFSET)))->Load)
#define GetHoldVal(tmrNumber) (((TmrRegs_t *)(MBAR_TMR + (((tmrNumber) & CHANNEL_MASK) << CHANNEL_OFFSET)))->Hold)
#define GetCntrVal(tmrNumber) (((TmrRegs_t *)(MBAR_TMR + (((tmrNumber) & CHANNEL_MASK) << CHANNEL_OFFSET)))->Cntr)
#define GetCompLoad1Val(tmrNumber) (((TmrRegs_t *)(MBAR_TMR + (((tmrNumber) & CHANNEL_MASK) << CHANNEL_OFFSET)))->CmpLd1)
#define GetCompLoad2Val(tmrNumber) (((TmrRegs_t *)(MBAR_TMR + (((tmrNumber) & CHANNEL_MASK) << CHANNEL_OFFSET)))->CmpLd2)
/************************************************************************************
*************************************************************************************
* Public prototypes
*************************************************************************************
************************************************************************************/
/************************************************************************************
*************************************************************************************
* Public type definitions
*************************************************************************************
************************************************************************************/
/** This data type enumerates the Timer API calls return values */
typedef enum {
gTmrErrNoError_c = 0,
gTmrErrTimerIsEn_c,
gTmrErrTimerIsDis_c,
gTmrErrNullPointer_c,
gTmrErrInvalidParameter_c,
gTmrErrTimerBusy_c,
gTmrErrMax_c
} TmrErr_t;
/** This data type enumerates the possible values for the timer number */
typedef enum {
gTmr0_c = 0,
gTmr1_c,
gTmr2_c,
gTmr3_c,
gTmrMax_c
} TmrNumber_t;
/** This data type enumerates the possible values of the count mode */
typedef enum {
gTmrNoOperation_c = 0,
gTmrCntRiseEdgPriSrc_c ,
gTmrCntRiseEdgFallEdgPriSrc_c,
gTmrCntRiseEdgWhileSecInputHighActive_c,
gTmrQuadCnt_c,
gTmrCntPriSrcRiseEdgSecSrcSpecDir_c,
gTmrEdgSecSrcTriggerPriCntTillComp_c,
gTmrSyncCnt_c,
gTmrModeMax_c
} TmrMode_t;
/** This data type enumerates the possible values for output mode */
typedef enum {
gTmrAssert_c = 0,
gTmrClearOF_c,
gTmrSetOF_c,
gTmrToggleOF_c,
gTmrToggleOFUsingAlternateReg_c,
gTmrSetOnCompClearOnSecInputEdg_c,
gTmrSetOnCompClearOnRollover_c,
gTmrEnGateClock_c,
gTmrOutputModeMax_c
} TmrOutputMode_t;
/** This data type enumerates the possible values for primary count source */
typedef enum {
gTmrPrimaryCnt0Input_c = 0,
gTmrPrimaryCnt1Input_c,
gTmrPrimaryCnt2Input_c,
gTmrPrimaryCnt3Input_c,
gTmrPrimaryCnt0Output_c,
gTmrPrimaryCnt1Output_c,
gTmrPrimaryCnt2Output_c,
gTmrPrimaryCnt3Output_c,
gTmrPrimaryClkDiv1_c,
gTmrPrimaryClkDiv2_c,
gTmrPrimaryClkDiv4_c,
gTmrPrimaryClkDiv8_c,
gTmrPrimaryClkDiv16_c,
gTmrPrimaryClkDiv32_c,
gTmrPrimaryClkDiv64_c,
gTmrPrimaryClkDiv128_c,
gTmrPrimaryCntSrcMax_c
} TmrPrimaryCntSrc_t;
/** This data type enumerates the values for the secondary count sorce */
typedef enum {
gTmrSecondaryCnt0Input_c = 0,
gTmrSecondaryCnt1Input_c,
gTmrSecondaryCnt2Input_c,
gTmrSecondaryCnt3Input_c,
gTmrSecondaryCntSrcMax_c
} TmrSecondaryCntSrc_t;
/** This data type enumerates the values for timer events*/
typedef enum {
gTmrComp1Event_c = 0,
gTmrComp2Event_c,
gTmrCompEvent_c,
gTmrOverEvent_c,
gTmrEdgeEvent_c,
gTmrMaxEvent
} TmrEvent_t;
/** This data type describes the configuration of the Timer module .*/
typedef struct TmrConfig_tag{
TmrOutputMode_t tmrOutputMode;
bool_t tmrCoInit;
bool_t tmrCntDir;
bool_t tmrCntLen;
bool_t tmrCntOnce;
TmrSecondaryCntSrc_t tmrSecondaryCntSrc;
TmrPrimaryCntSrc_t tmrPrimaryCntSrc;
} TmrConfig_t;
/** This data type describes the status and control of the Timer module.*/
typedef union TmrStatusCtrl_tag{
struct{
uint16_t OEN:1;
uint16_t OPS:1;
uint16_t FORCE:1;
uint16_t VAL:1;
uint16_t EEOF:1;
uint16_t MSTR:1;
uint16_t CAPMODE:2;
uint16_t INPUT:1;
uint16_t IPS:1;
uint16_t IEFIE:1;
uint16_t IEF:1;
uint16_t TOFIE:1;
uint16_t TOF:1;
uint16_t TCFIE:1;
uint16_t TCF:1;
} bitFields;
uint16_t uintValue;
} TmrStatusCtrl_t;
/** This data type describes the comparator status and control of the Timer module.*/
typedef union TmrComparatorStatusCtrl_tag{
struct{
uint16_t CL1:2;
uint16_t CL2:2;
uint16_t TCF1:1;
uint16_t TCF2:1;
uint16_t TCF1EN:1;
uint16_t TCF2EN:1;
uint16_t RESERVED:5;
uint16_t FILT_EN:1;
uint16_t DBG_EN:2;
} bitFields;
uint16_t uintValue;
} TmrComparatorStatusCtrl_t;
/** This data type lists the callback functions for the Timer module driver*/
typedef void (*TmrCallbackFunction_t)(TmrNumber_t tmrNumber);
/************************************************************************************
*************************************************************************************
* Public memory declarations
*************************************************************************************
************************************************************************************/
/************************************************************************************
*************************************************************************************
* Public functions
*************************************************************************************
************************************************************************************/
/*================================================================================================*/
/*===== TmrInit =====*/
/**
@brief The function is called to init timer module.
@param
@return
Revision history:
date Author Comments
---------- ---------------------- -------
03.07.2006 B04839 Created
*/
/*===============================================================================================*/
extern void TmrInit(void);
/*================================================================================================*/
/*===== TmrEnable =====*/
/**
@brief The function is called to enable corresponding timer module.
@param TmrNumber_t tmrNumber - number of the timer instance to enable
@return parameter of type TmrErr_t with following possible values (they are self-explaining):
gTmrErrNoError_c
gTmrErrInvalidParameter_c
gTmrErrTimerAlreadyEnabled_c
Revision history:
date Author Comments
---------- ---------------------- -------
03.07.2006 B04839 Created
*/
/*===============================================================================================*/
extern TmrErr_t TmrEnable(TmrNumber_t tmrNumber);
/*================================================================================================*/
/*===== TmrDisable =====*/
/**
@brief The function is called to disable corresponding timer module.
@param TmrNumber_t tmrNumber - number of the timer instance to enable
@return parameter of type TmrErr_t with following possible values (they are self-explaining):
gTmrErrNoError_c
gTmrErrInvalidParameter_c
gTmrErrTimerAlreadyDisabled_c
Revision history:
date Author Comments
---------- ---------------------- -------
03.07.2006 B04839 Created
*/
/*===============================================================================================*/
extern TmrErr_t TmrDisable(TmrNumber_t tmrNumber);
/*================================================================================================*/
/*===== TmrSetMode =====*/
/**
@brief The function is called to set the working mode for the Timer peripheral specified as parameter.
@param TmrNumber_t tmrNumber - number of the timer instance to set working mode
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -