TIMER - Timer/Counter
Description
Timer/Counter (TIMER) Peripheral API.
The timer module consists of three main parts:
- General timer configuration and enable control.
- Compare/capture control.
- Dead time insertion control (may not be available for all timers).
Data Structures | |
struct | TIMER_Init_TypeDef |
TIMER initialization structure. | |
struct | TIMER_InitCC_TypeDef |
TIMER compare/capture initialization structure. | |
struct | TIMER_InitDTI_TypeDef |
TIMER Dead Time Insertion (DTI) initialization structure. | |
Functions | |
void | TIMER_Init (TIMER_TypeDef *timer, const TIMER_Init_TypeDef *init) |
Initialize TIMER. | |
void | TIMER_InitCC (TIMER_TypeDef *timer, unsigned int ch, const TIMER_InitCC_TypeDef *init) |
Initialize the TIMER compare/capture channel. | |
void | TIMER_InitDTI (TIMER_TypeDef *timer, const TIMER_InitDTI_TypeDef *init) |
Initialize the TIMER DTI unit. | |
void | TIMER_Reset (TIMER_TypeDef *timer) |
Reset the TIMER to the same state that it was in after a hardware reset. | |
bool | TIMER_Valid (const TIMER_TypeDef *ref) |
Validate the TIMER register block pointer. | |
bool | TIMER_SupportsDTI (const TIMER_TypeDef *ref) |
Check whether the TIMER is valid and supports Dead Timer Insertion (DTI). | |
uint32_t | TIMER_MaxCount (const TIMER_TypeDef *ref) |
Get the Max count of the timer. | |
uint32_t | TIMER_CaptureGet (TIMER_TypeDef *timer, unsigned int ch) |
Get compare/capture value for the compare/capture channel. | |
uint32_t | TIMER_CaptureBufGet (TIMER_TypeDef *timer, unsigned int ch) |
Get the buffered compare/capture value for compare/capture channel. | |
void | TIMER_CompareBufSet (TIMER_TypeDef *timer, unsigned int ch, uint32_t val) |
Set the compare value buffer for the compare/capture channel when operating in compare or PWM mode. | |
void | TIMER_CompareSet (TIMER_TypeDef *timer, unsigned int ch, uint32_t val) |
Set the compare value for compare/capture channel when operating in compare or PWM mode. | |
uint32_t | TIMER_CounterGet (TIMER_TypeDef *timer) |
Get the TIMER counter value. | |
void | TIMER_CounterSet (TIMER_TypeDef *timer, uint32_t val) |
Set the TIMER counter value. | |
void | TIMER_Enable (TIMER_TypeDef *timer, bool enable) |
Start/stop TIMER. | |
void | TIMER_EnableDTI (TIMER_TypeDef *timer, bool enable) |
Enable or disable DTI unit. | |
uint32_t | TIMER_GetDTIFault (TIMER_TypeDef *timer) |
Get DTI fault source flags status. | |
void | TIMER_ClearDTIFault (TIMER_TypeDef *timer, uint32_t flags) |
Clear DTI fault source flags. | |
void | TIMER_IntClear (TIMER_TypeDef *timer, uint32_t flags) |
Clear one or more pending TIMER interrupts. | |
void | TIMER_IntDisable (TIMER_TypeDef *timer, uint32_t flags) |
Disable one or more TIMER interrupts. | |
void | TIMER_IntEnable (TIMER_TypeDef *timer, uint32_t flags) |
Enable one or more TIMER interrupts. | |
uint32_t | TIMER_IntGet (TIMER_TypeDef *timer) |
Get pending TIMER interrupt flags. | |
uint32_t | TIMER_IntGetEnabled (TIMER_TypeDef *timer) |
Get enabled and pending TIMER interrupt flags. | |
void | TIMER_IntSet (TIMER_TypeDef *timer, uint32_t flags) |
Set one or more pending TIMER interrupts from SW. | |
void | TIMER_Lock (TIMER_TypeDef *timer) |
Lock some TIMER registers to protect them from being modified. | |
void | TIMER_TopBufSet (TIMER_TypeDef *timer, uint32_t val) |
Set the top value buffer for the timer. | |
uint32_t | TIMER_TopGet (TIMER_TypeDef *timer) |
Get the top value setting for the timer. | |
void | TIMER_TopSet (TIMER_TypeDef *timer, uint32_t val) |
Set the top value for timer. | |
void | TIMER_Unlock (TIMER_TypeDef *timer) |
Unlock TIMER to enable writing to locked registers again. | |
Macros | |
#define | TIMER_INIT_DEFAULT |
Default configuration for TIMER initialization structure. | |
#define | TIMER_INITCC_DEFAULT |
Default configuration for TIMER compare/capture initialization structure. | |
#define | TIMER_INITDTI_DEFAULT |
Default configuration for TIMER DTI initialization structure. | |
Typedefs | |
typedef uint8_t | TIMER_PRSSEL_TypeDef |
Peripheral Reflex System signal. | |
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 } |
Timer compare/capture mode. | |
enum | TIMER_ClkSel_TypeDef { timerClkSelHFPerClk = _TIMER_CTRL_CLKSEL_PRESCHFPERCLK, timerClkSelCC1 = _TIMER_CTRL_CLKSEL_CC1, timerClkSelCascade = _TIMER_CTRL_CLKSEL_TIMEROUF } |
Clock select. | |
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 } |
Input capture edge select. | |
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 } |
Input capture event control. | |
enum | TIMER_InputAction_TypeDef { timerInputActionNone = _TIMER_CTRL_FALLA_NONE, timerInputActionStart = _TIMER_CTRL_FALLA_START, timerInputActionStop = _TIMER_CTRL_FALLA_STOP, timerInputActionReloadStart = _TIMER_CTRL_FALLA_RELOADSTART } |
Input edge action. | |
enum | TIMER_Mode_TypeDef { timerModeUp = _TIMER_CTRL_MODE_UP, timerModeDown = _TIMER_CTRL_MODE_DOWN, timerModeUpDown = _TIMER_CTRL_MODE_UPDOWN, timerModeQDec = _TIMER_CTRL_MODE_QDEC } |
Timer mode. | |
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 } |
Compare/capture output action. | |
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 } |
Prescaler. | |
enum | TIMER_DtiFaultAction_TypeDef { timerDtiFaultActionNone = _TIMER_DTFC_DTFA_NONE, timerDtiFaultActionInactive = _TIMER_DTFC_DTFA_INACTIVE, timerDtiFaultActionClear = _TIMER_DTFC_DTFA_CLEAR, timerDtiFaultActionTristate = _TIMER_DTFC_DTFA_TRISTATE } |
DT (Dead Time) Fault Actions. | |
enum | TIMER_PrsOutput_t { timerPrsOutputPulse = 0, timerPrsOutputLevel = 1, timerPrsOutputDefault = timerPrsOutputPulse } |
PRS Output configuration. | |
Function Documentation
◆ TIMER_Init()
void TIMER_Init | ( | TIMER_TypeDef * | timer, |
const TIMER_Init_TypeDef * | init |
||
) |
Initialize TIMER.
Notice that the counter top must be configured separately with, for instance TIMER_TopSet(). In addition, compare/capture and dead-time insertion initialization must be initialized separately if used, which should probably be done prior to using this function if configuring the TIMER to start when initialization is completed.
- Parameters
-
[in] timer
A pointer to the TIMER peripheral register block. [in] init
A pointer to the TIMER initialization structure.
◆ TIMER_InitCC()
void TIMER_InitCC | ( | TIMER_TypeDef * | timer, |
unsigned int | ch, |
||
const TIMER_InitCC_TypeDef * | init |
||
) |
Initialize the TIMER compare/capture channel.
Notice that if operating the channel in compare mode, the CCV and CCVB register must be set separately, as required.
- Parameters
-
[in] timer
A pointer to the TIMER peripheral register block. [in] ch
A compare/capture channel to initialize for. [in] init
A pointer to the TIMER initialization structure.
◆ TIMER_InitDTI()
void TIMER_InitDTI | ( | TIMER_TypeDef * | timer, |
const TIMER_InitDTI_TypeDef * | init |
||
) |
Initialize the TIMER DTI unit.
- Parameters
-
[in] timer
A pointer to the TIMER peripheral register block. [in] init
A pointer to the TIMER DTI initialization structure.
◆ TIMER_Reset()
void TIMER_Reset | ( | TIMER_TypeDef * | timer | ) |
Reset the TIMER to the same state that it was in after a hardware reset.
- Note
- The ROUTE register is NOT reset by this function to allow for a centralized setup of this feature.
- Parameters
-
[in] timer
A pointer to the TIMER peripheral register block.
◆ TIMER_Valid()
|
inline |
Validate the TIMER register block pointer.
- Parameters
-
[in] ref
Pointer to the TIMER peripheral register block.
- Returns
- True if ref points to a valid timer, false otherwise.
◆ TIMER_SupportsDTI()
|
inline |
Check whether the TIMER is valid and supports Dead Timer Insertion (DTI).
- Parameters
-
[in] ref
Pointer to the TIMER peripheral register block.
- Returns
- True if ref points to a valid timer that supports DTI, false otherwise.
◆ TIMER_MaxCount()
|
inline |
Get the Max count of the timer.
- Parameters
-
[in] ref
Pointer to the TIMER peripheral register block.
- Returns
- The max count value of the timer. This is 0xFFFF for 16 bit timers and 0xFFFFFFFF for 32 bit timers.
◆ TIMER_CaptureGet()
|
inline |
Get compare/capture value for the compare/capture channel.
- Parameters
-
[in] timer
Pointer to the TIMER peripheral register block. [in] ch
Compare/capture channel to access.
- Returns
- Current capture value.
◆ TIMER_CaptureBufGet()
|
inline |
Get the buffered compare/capture value for compare/capture channel.
- Parameters
-
[in] timer
Pointer to the TIMER peripheral register block. [in] ch
Compare/capture channel to access.
- Returns
- Current buffered capture value.
◆ TIMER_CompareBufSet()
|
inline |
Set the compare value buffer for the compare/capture channel when operating in compare or PWM mode.
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.
- Parameters
-
[in] timer
Pointer to the TIMER peripheral register block. [in] ch
Compare/capture channel to access. [in] val
Value to set in compare value buffer register.
◆ TIMER_CompareSet()
|
inline |
Set the compare value for compare/capture channel when operating in compare or PWM mode.
- Parameters
-
[in] timer
Pointer to the TIMER peripheral register block. [in] ch
Compare/capture channel to access. [in] val
Value to set in compare value register.
◆ TIMER_CounterGet()
|
inline |
Get the TIMER counter value.
- Parameters
-
[in] timer
Pointer to TIMER peripheral register block.
- Returns
- Current TIMER counter value.
◆ TIMER_CounterSet()
|
inline |
Set the TIMER counter value.
- Parameters
-
[in] timer
Pointer to the TIMER peripheral register block. [in] val
Value to set counter to.
◆ TIMER_Enable()
|
inline |
Start/stop TIMER.
- Parameters
-
[in] timer
Pointer to the TIMER peripheral register block. [in] enable
Set to true to enable counting; set to false otherwise.
◆ TIMER_EnableDTI()
|
inline |
Enable or disable DTI unit.
- Parameters
-
[in] timer
Pointer to the TIMER peripheral register block. [in] enable
Set to true to enable DTI unit; set to false otherwise.
◆ TIMER_GetDTIFault()
|
inline |
Get DTI fault source flags status.
- Note
- Event bits are not cleared by this function.
- Parameters
-
[in] timer
Pointer to the TIMER peripheral register block.
- Returns
- Status of the DTI fault source flags. Returns one or more valid DTI fault source flags (TIMER_DTFAULT_nnn) OR'ed together.
◆ TIMER_ClearDTIFault()
|
inline |
Clear DTI fault source flags.
- Parameters
-
[in] timer
Pointer to the TIMER peripheral register block. [in] flags
DTI fault source(s) to clear. Use one or more valid DTI fault source flags (TIMER_DTFAULT_nnn) OR'ed together.
◆ TIMER_IntClear()
|
inline |
Clear one or more pending TIMER interrupts.
- Parameters
-
[in] timer
Pointer to the 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.
◆ TIMER_IntDisable()
|
inline |
Disable one or more TIMER interrupts.
- Parameters
-
[in] timer
Pointer to the 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.
◆ TIMER_IntEnable()
|
inline |
Enable one or more TIMER interrupts.
- Note
- Depending on the use, a pending interrupt may already be set prior to enabling the interrupt. To ignore a pending interrupt, consider using TIMER_IntClear() prior to enabling the interrupt.
- Parameters
-
[in] timer
Pointer to the 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.
◆ TIMER_IntGet()
|
inline |
Get pending TIMER interrupt flags.
- Note
- Event bits are not cleared by this function.
- Parameters
-
[in] timer
Pointer to the TIMER peripheral register block.
- Returns
- TIMER interrupt source(s) pending. Returns one or more valid interrupt flags for the TIMER module (TIMER_IF_nnn) OR'ed together.
◆ TIMER_IntGetEnabled()
|