EFM32 Zero Gecko Software Documentation
efm32zg-doc-4.2.1
|
Timer/Counter (TIMER) Peripheral API. More...
Data Structures | |
struct | TIMER_Init_TypeDef |
struct | TIMER_InitCC_TypeDef |
Macros | |
#define | TIMER_INIT_DEFAULT |
#define | TIMER_INITCC_DEFAULT |
Enumerations | |
enum | TIMER_CCMode_TypeDef { timerCCModeOff = _TIMER_CC_CTRL_MODE_OFF, timerCCModeCapture = _TIMER_CC_CTRL_MODE_INPUTCAPTURE, timerCCModeCompare = _TIMER_CC_CTRL_MODE_OUTPUTCOMPARE, timerCCModePWM = _TIMER_CC_CTRL_MODE_PWM } |
enum | TIMER_ClkSel_TypeDef { timerClkSelHFPerClk = _TIMER_CTRL_CLKSEL_PRESCHFPERCLK, timerClkSelCC1 = _TIMER_CTRL_CLKSEL_CC1, timerClkSelCascade = _TIMER_CTRL_CLKSEL_TIMEROUF } |
enum | TIMER_Edge_TypeDef { timerEdgeRising = _TIMER_CC_CTRL_ICEDGE_RISING, timerEdgeFalling = _TIMER_CC_CTRL_ICEDGE_FALLING, timerEdgeBoth = _TIMER_CC_CTRL_ICEDGE_BOTH, timerEdgeNone = _TIMER_CC_CTRL_ICEDGE_NONE } |
enum | TIMER_Event_TypeDef { timerEventEveryEdge = _TIMER_CC_CTRL_ICEVCTRL_EVERYEDGE, timerEventEvery2ndEdge = _TIMER_CC_CTRL_ICEVCTRL_EVERYSECONDEDGE, timerEventRising = _TIMER_CC_CTRL_ICEVCTRL_RISING, timerEventFalling = _TIMER_CC_CTRL_ICEVCTRL_FALLING } |
enum | TIMER_InputAction_TypeDef { timerInputActionNone = _TIMER_CTRL_FALLA_NONE, timerInputActionStart = _TIMER_CTRL_FALLA_START, timerInputActionStop = _TIMER_CTRL_FALLA_STOP, timerInputActionReloadStart = _TIMER_CTRL_FALLA_RELOADSTART } |
enum | TIMER_Mode_TypeDef { timerModeUp = _TIMER_CTRL_MODE_UP, timerModeDown = _TIMER_CTRL_MODE_DOWN, timerModeUpDown = _TIMER_CTRL_MODE_UPDOWN, timerModeQDec = _TIMER_CTRL_MODE_QDEC } |
enum | TIMER_OutputAction_TypeDef { timerOutputActionNone = _TIMER_CC_CTRL_CUFOA_NONE, timerOutputActionToggle = _TIMER_CC_CTRL_CUFOA_TOGGLE, timerOutputActionClear = _TIMER_CC_CTRL_CUFOA_CLEAR, timerOutputActionSet = _TIMER_CC_CTRL_CUFOA_SET } |
enum | TIMER_Prescale_TypeDef { timerPrescale1 = _TIMER_CTRL_PRESC_DIV1, timerPrescale2 = _TIMER_CTRL_PRESC_DIV2, timerPrescale4 = _TIMER_CTRL_PRESC_DIV4, timerPrescale8 = _TIMER_CTRL_PRESC_DIV8, timerPrescale16 = _TIMER_CTRL_PRESC_DIV16, timerPrescale32 = _TIMER_CTRL_PRESC_DIV32, timerPrescale64 = _TIMER_CTRL_PRESC_DIV64, timerPrescale128 = _TIMER_CTRL_PRESC_DIV128, timerPrescale256 = _TIMER_CTRL_PRESC_DIV256, timerPrescale512 = _TIMER_CTRL_PRESC_DIV512, timerPrescale1024 = _TIMER_CTRL_PRESC_DIV1024 } |
enum | TIMER_PRSSEL_TypeDef { timerPRSSELCh0 = _TIMER_CC_CTRL_PRSSEL_PRSCH0, timerPRSSELCh1 = _TIMER_CC_CTRL_PRSSEL_PRSCH1, timerPRSSELCh2 = _TIMER_CC_CTRL_PRSSEL_PRSCH2, timerPRSSELCh3 = _TIMER_CC_CTRL_PRSSEL_PRSCH3 } |
Functions | |
__STATIC_INLINE uint32_t | TIMER_CaptureGet (TIMER_TypeDef *timer, unsigned int ch) |
Get capture value for compare/capture channel when operating in capture mode. More... | |
__STATIC_INLINE void | TIMER_CompareBufSet (TIMER_TypeDef *timer, unsigned int ch, uint32_t val) |
Set compare value buffer for compare/capture channel when operating in compare or PWM mode. More... | |
__STATIC_INLINE void | TIMER_CompareSet (TIMER_TypeDef *timer, unsigned int ch, uint32_t val) |
Set compare value for compare/capture channel when operating in compare or PWM mode. More... | |
__STATIC_INLINE uint32_t | TIMER_CounterGet (TIMER_TypeDef *timer) |
Get TIMER counter value. More... | |
__STATIC_INLINE void | TIMER_CounterSet (TIMER_TypeDef *timer, uint32_t val) |
Set TIMER counter value. More... | |
__STATIC_INLINE void | TIMER_Enable (TIMER_TypeDef *timer, bool enable) |
Start/stop TIMER. More... | |
void | TIMER_Init (TIMER_TypeDef *timer, const TIMER_Init_TypeDef *init) |
Initialize TIMER. More... | |
void | TIMER_InitCC (TIMER_TypeDef *timer, unsigned int ch, const TIMER_InitCC_TypeDef *init) |
Initialize TIMER compare/capture channel. More... | |
__STATIC_INLINE void | TIMER_IntClear (TIMER_TypeDef *timer, uint32_t flags) |
Clear one or more pending TIMER interrupts. More... | |
__STATIC_INLINE void | TIMER_IntDisable (TIMER_TypeDef *timer, uint32_t flags) |
Disable one or more TIMER interrupts. More... | |
__STATIC_INLINE void | TIMER_IntEnable (TIMER_TypeDef *timer, uint32_t flags) |
Enable one or more TIMER interrupts. More... | |
__STATIC_INLINE uint32_t | TIMER_IntGet (TIMER_TypeDef *timer) |
Get pending TIMER interrupt flags. More... | |
__STATIC_INLINE uint32_t | TIMER_IntGetEnabled (TIMER_TypeDef *timer) |
Get enabled and pending TIMER interrupt flags. Useful for handling more interrupt sources in the same interrupt handler. More... | |
__STATIC_INLINE void | TIMER_IntSet (TIMER_TypeDef *timer, uint32_t flags) |
Set one or more pending TIMER interrupts from SW. More... | |
void | TIMER_Reset (TIMER_TypeDef *timer) |
Reset TIMER to same state as after a HW reset. More... | |
__STATIC_INLINE void | TIMER_TopBufSet (TIMER_TypeDef *timer, uint32_t val) |
Set top value buffer for timer. More... | |
__STATIC_INLINE uint32_t | TIMER_TopGet (TIMER_TypeDef *timer) |
Get top value setting for timer. More... | |
__STATIC_INLINE void | TIMER_TopSet (TIMER_TypeDef *timer, uint32_t val) |
Set top value for timer. More... | |
The timer module consists of three main parts:
#define TIMER_INIT_DEFAULT |
Default config for TIMER init structure.
Definition at line 317 of file em_timer.h.
Referenced by USTIMER_Init().
#define TIMER_INITCC_DEFAULT |
Default config for TIMER compare/capture init structure.
Definition at line 397 of file em_timer.h.
Referenced by USTIMER_Init().
enum TIMER_CCMode_TypeDef |
Timer compare/capture mode.
Enumerator | |
---|---|
timerCCModeOff |
Channel turned off. |
timerCCModeCapture |
Input capture. |
timerCCModeCompare |
Output compare. |
timerCCModePWM |
Pulse-Width modulation. |
Definition at line 97 of file em_timer.h.
enum TIMER_ClkSel_TypeDef |
Clock select.
Definition at line 107 of file em_timer.h.
enum TIMER_Edge_TypeDef |
Input capture edge select.
Enumerator | |
---|---|
timerEdgeRising |
Rising edges detected. |
timerEdgeFalling |
Falling edges detected. |
timerEdgeBoth |
Both edges detected. |
timerEdgeNone |
No edge detection, leave signal as is. |
Definition at line 124 of file em_timer.h.
enum TIMER_Event_TypeDef |
Input capture event control.
Definition at line 141 of file em_timer.h.
Input edge action.
Definition at line 161 of file em_timer.h.
enum TIMER_Mode_TypeDef |
Timer mode.
Enumerator | |
---|---|
timerModeUp |
Up-counting. |
timerModeDown |
Down-counting. |
timerModeUpDown |
Up/down-counting. |
timerModeQDec |
Quadrature decoder. |
Definition at line 178 of file em_timer.h.
Compare/capture output action.
Enumerator | |
---|---|
timerOutputActionNone |
No action. |
timerOutputActionToggle |
Toggle on event. |
timerOutputActionClear |
Clear on event. |
timerOutputActionSet |
Set on event. |
Definition at line 188 of file em_timer.h.
Prescaler.
Definition at line 205 of file em_timer.h.
enum TIMER_PRSSEL_TypeDef |
Peripheral Reflex System signal.
Enumerator | |
---|---|
timerPRSSELCh0 |
PRS channel 0. |
timerPRSSELCh1 |
PRS channel 1. |
timerPRSSELCh2 |
PRS channel 2. |
timerPRSSELCh3 |
PRS channel 3. |
Definition at line 222 of file em_timer.h.
__STATIC_INLINE uint32_t TIMER_CaptureGet | ( | TIMER_TypeDef * | timer, |
unsigned int | ch | ||
) |
[in] | timer | Pointer to TIMER peripheral register block. |
[in] | ch | Compare/capture channel to access. |
Definition at line 516 of file em_timer.h.
References TIMER_TypeDef::CC, and TIMER_CC_TypeDef::CCV.
__STATIC_INLINE void TIMER_CompareBufSet | ( | TIMER_TypeDef * | timer, |
unsigned int | ch, | ||
uint32_t | val | ||
) |
The compare value buffer holds the value which will be written to TIMERn_CCx_CCV on an update event if the buffer has been updated since the last event.
[in] | timer | Pointer to TIMER peripheral register block. |
[in] | ch | Compare/capture channel to access. |
[in] | val | Value to set in compare value buffer register. |
Definition at line 541 of file em_timer.h.
References TIMER_TypeDef::CC, and TIMER_CC_TypeDef::CCVB.
__STATIC_INLINE void TIMER_CompareSet | ( | TIMER_TypeDef * | timer, |
unsigned int | ch, | ||
uint32_t | val | ||
) |
[in] | timer | Pointer to TIMER peripheral register block. |
[in] | ch | Compare/capture channel to access. |
[in] | val | Value to set in compare value register. |
Definition at line 563 of file em_timer.h.
References TIMER_TypeDef::CC, and TIMER_CC_TypeDef::CCV.
__STATIC_INLINE uint32_t TIMER_CounterGet | ( | TIMER_TypeDef * | timer | ) |
[in] | timer | Pointer to TIMER peripheral register block. |
Definition at line 581 of file em_timer.h.
References TIMER_TypeDef::CNT.
__STATIC_INLINE void TIMER_CounterSet | ( | TIMER_TypeDef * | timer, |
uint32_t | val | ||
) |
[in] | timer | Pointer to TIMER peripheral register block. |
[in] | val | Value to set counter to. |
Definition at line 597 of file em_timer.h.
References TIMER_TypeDef::CNT.
__STATIC_INLINE void TIMER_Enable | ( | TIMER_TypeDef * | timer, |
bool | enable | ||
) |
[in] | timer | Pointer to TIMER peripheral register block. |
[in] | enable | true to enable counting, false to disable. |
Definition at line 613 of file em_timer.h.
References TIMER_TypeDef::CMD, TIMER_CMD_START, and TIMER_CMD_STOP.
Referenced by USTIMER_DeInit().
void TIMER_Init | ( | TIMER_TypeDef * | timer, |
const TIMER_Init_TypeDef * | init | ||
) |
Notice that counter top must be configured separately with for instance TIMER_TopSet(). In addition, compare/capture and dead-time insertion init must be initialized separately if used. That should probably be done prior to the use of this function if configuring the TIMER to start when initialization is completed.
[in] | timer | Pointer to TIMER peripheral register block. |
[in] | init | Pointer to TIMER initialization structure. |
Definition at line 76 of file em_timer.c.
References _TIMER_CNT_RESETVALUE, _TIMER_CTRL_CLKSEL_SHIFT, _TIMER_CTRL_FALLA_SHIFT, _TIMER_CTRL_MODE_SHIFT, _TIMER_CTRL_PRESC_SHIFT, _TIMER_CTRL_RISEA_SHIFT, TIMER_Init_TypeDef::ati, TIMER_Init_TypeDef::clkSel, TIMER_TypeDef::CMD, TIMER_TypeDef::CNT, TIMER_Init_TypeDef::count2x, TIMER_TypeDef::CTRL, TIMER_Init_TypeDef::debugRun, TIMER_Init_TypeDef::dmaClrAct, TIMER_Init_TypeDef::enable, TIMER_Init_TypeDef::fallAction, TIMER_Init_TypeDef::mode, TIMER_Init_TypeDef::oneShot, TIMER_Init_TypeDef::prescale, TIMER_Init_TypeDef::quadModeX4, TIMER_Init_TypeDef::riseAction, TIMER_Init_TypeDef::sync, TIMER_CMD_START, TIMER_CMD_STOP, TIMER_CTRL_ATI, TIMER_CTRL_DEBUGRUN, TIMER_CTRL_DMACLRACT, TIMER_CTRL_OSMEN, TIMER_CTRL_QDM_X4, TIMER_CTRL_SYNC, and TIMER_CTRL_X2CNT.
Referenced by USTIMER_Init().
void TIMER_InitCC | ( | TIMER_TypeDef * | timer, |
unsigned int | ch, | ||
const TIMER_InitCC_TypeDef * | init | ||
) |
Notice that if operating channel in compare mode, the CCV and CCVB register must be set separately as required.
[in] | timer | Pointer to TIMER peripheral register block. |
[in] | ch | Compare/capture channel to init for. |
[in] | init | Pointer to TIMER initialization structure. |
Definition at line 130 of file em_timer.c.
References _TIMER_CC_CTRL_CMOA_SHIFT, _TIMER_CC_CTRL_COFOA_SHIFT, _TIMER_CC_CTRL_CUFOA_SHIFT, _TIMER_CC_CTRL_ICEDGE_SHIFT, _TIMER_CC_CTRL_ICEVCTRL_SHIFT, _TIMER_CC_CTRL_MODE_SHIFT, _TIMER_CC_CTRL_PRSSEL_SHIFT, TIMER_TypeDef::CC, TIMER_InitCC_TypeDef::cmoa, TIMER_InitCC_TypeDef::cofoa, TIMER_InitCC_TypeDef::coist, TIMER_CC_TypeDef::CTRL, TIMER_InitCC_TypeDef::cufoa, TIMER_InitCC_TypeDef::edge, TIMER_InitCC_TypeDef::eventCtrl, TIMER_InitCC_TypeDef::filter, TIMER_InitCC_TypeDef::mode, TIMER_InitCC_TypeDef::outInvert, TIMER_InitCC_TypeDef::prsInput, TIMER_InitCC_TypeDef::prsSel, TIMER_CC_CTRL_COIST, TIMER_CC_CTRL_FILT_ENABLE, TIMER_CC_CTRL_INSEL_PRS, and TIMER_CC_CTRL_OUTINV.
Referenced by USTIMER_Init().
__STATIC_INLINE void TIMER_IntClear | ( | TIMER_TypeDef * | timer, |
uint32_t | flags | ||
) |
[in] | timer | Pointer to TIMER peripheral register block. |
[in] | flags | Pending TIMER interrupt source(s) to clear. Use one or more valid interrupt flags for the TIMER module (TIMER_IF_nnn) OR'ed together. |
Definition at line 713 of file em_timer.h.
References TIMER_TypeDef::IFC.
Referenced by USTIMER_DeInit().
__STATIC_INLINE void TIMER_IntDisable | ( | TIMER_TypeDef * | timer, |
uint32_t | flags | ||
) |
[in] | timer | Pointer to TIMER peripheral register block. |
[in] | flags | TIMER interrupt source(s) to disable. Use one or more valid interrupt flags for the TIMER module (TIMER_IF_nnn) OR'ed together. |
Definition at line 730 of file em_timer.h.
References TIMER_TypeDef::IEN.
Referenced by USTIMER_DeInit(), and USTIMER_Init().
__STATIC_INLINE void TIMER_IntEnable | ( | TIMER_TypeDef * | timer, |
uint32_t | flags | ||
) |
[in] | timer | Pointer to TIMER peripheral register block. |
[in] | flags | TIMER interrupt source(s) to enable. Use one or more valid interrupt flags for the TIMER module (TIMER_IF_nnn) OR'ed together. |
Definition at line 752 of file em_timer.h.
References TIMER_TypeDef::IEN.
__STATIC_INLINE uint32_t TIMER_IntGet | ( | TIMER_TypeDef * | timer | ) |
[in] | timer | Pointer to TIMER peripheral register block. |
Definition at line 772 of file em_timer.h.
References TIMER_TypeDef::IF.
__STATIC_INLINE uint32_t TIMER_IntGetEnabled | ( | TIMER_TypeDef * | timer | ) |
[in] | timer | Pointer to TIMER peripheral register block. |
Definition at line 797 of file em_timer.h.
References TIMER_TypeDef::IEN, and TIMER_TypeDef::IF.
__STATIC_INLINE void TIMER_IntSet | ( | TIMER_TypeDef * | timer, |
uint32_t | flags | ||
) |
[in] | timer | Pointer to TIMER peripheral register block. |
[in] | flags | TIMER interrupt source(s) to set to pending. Use one or more valid interrupt flags for the TIMER module (TIMER_IF_nnn) OR'ed together. |
Definition at line 821 of file em_timer.h.
References TIMER_TypeDef::IFS.
void TIMER_Reset | ( | TIMER_TypeDef * | timer | ) |
[in] | timer | Pointer to TIMER peripheral register block. |
Definition at line 218 of file em_timer.c.
References _TIMER_CC_CCV_RESETVALUE, _TIMER_CC_CCVB_RESETVALUE, _TIMER_CC_CTRL_RESETVALUE, _TIMER_CNT_RESETVALUE, _TIMER_CTRL_RESETVALUE, _TIMER_IEN_RESETVALUE, _TIMER_IFC_MASK, _TIMER_TOP_RESETVALUE, _TIMER_TOPB_RESETVALUE, TIMER_TypeDef::CC, TIMER_CC_TypeDef::CCV, TIMER_CC_TypeDef::CCVB, TIMER_TypeDef::CMD, TIMER_TypeDef::CNT, TIMER_CC_TypeDef::CTRL, TIMER_TypeDef::CTRL, TIMER_TypeDef::IEN, TIMER_TypeDef::IFC, TIMER_CMD_STOP, TIMER_TypeDef::TOP, and TIMER_TypeDef::TOPB.
__STATIC_INLINE void TIMER_TopBufSet | ( | TIMER_TypeDef * | timer, |
uint32_t | val | ||
) |
When the top value buffer register is updated, the value is loaded into the top value register at the next wrap around. This feature is useful in order to update the top value safely when the timer is running.
[in] | timer | Pointer to TIMER peripheral register block. |
[in] | val | Value to set in top value buffer register. |
Definition at line 868 of file em_timer.h.
References TIMER_TypeDef::TOPB.
__STATIC_INLINE uint32_t TIMER_TopGet | ( | TIMER_TypeDef * | timer | ) |
[in] | timer | Pointer to TIMER peripheral register block. |
Definition at line 884 of file em_timer.h.
References TIMER_TypeDef::TOP.
__STATIC_INLINE void TIMER_TopSet | ( | TIMER_TypeDef * | timer, |
uint32_t | val | ||
) |
[in] | timer | Pointer to TIMER peripheral register block. |
[in] | val | Value to set in top value register. |
Definition at line 900 of file em_timer.h.
References TIMER_TypeDef::TOP.
Referenced by USTIMER_Init().