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 TIMER register block pointer.
|
|
bool | TIMER_SupportsDTI (const TIMER_TypeDef *ref) |
Check if 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 compare/capture channel.
|
|
uint32_t | TIMER_CaptureBufGet (TIMER_TypeDef *timer, unsigned int ch) |
Get buffered compare/capture value for compare/capture channel.
|
|
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.
|
|
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.
|
|
uint32_t | TIMER_CounterGet (TIMER_TypeDef *timer) |
Get TIMER counter value.
|
|
void | TIMER_CounterSet (TIMER_TypeDef *timer, uint32_t val) |
Set 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 of the TIMER registers in order to protect them from being modified.
|
|
void | TIMER_TopBufSet (TIMER_TypeDef *timer, uint32_t val) |
Set top value buffer for timer.
|
|
uint32_t | TIMER_TopGet (TIMER_TypeDef *timer) |
Get top value setting for timer.
|
|
void | TIMER_TopSet (TIMER_TypeDef *timer, uint32_t val) |
Set 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 TIMER register block pointer.
- Parameters
-
[in] ref
Pointer to TIMER peripheral register block.
- Returns
- True if ref points to a valid timer, false otherwise.
◆ TIMER_SupportsDTI()
|
inline |
Check if TIMER is valid and supports Dead Timer Insertion (DTI).
- Parameters
-
[in] ref
Pointer to 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 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 compare/capture channel.
- Parameters
-
[in] timer
Pointer to TIMER peripheral register block. [in] ch
Compare/capture channel to access.
- Returns
- Current capture value.
◆ TIMER_CaptureBufGet()
|
inline |
Get buffered compare/capture value for compare/capture channel.
- Parameters
-
[in] timer
Pointer to TIMER peripheral register block. [in] ch
Compare/capture channel to access.
- Returns
- Current buffered capture value.
◆ TIMER_CompareBufSet()
|
inline |
Set compare value buffer for 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 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 compare value for compare/capture channel when operating in compare or PWM mode.
- Parameters
-
[in] timer
Pointer to TIMER peripheral register block. [in] ch
Compare/capture channel to access. [in] val
Value to set in compare value register.
◆ TIMER_CounterGet()
|
inline |
Get TIMER counter value.
- Parameters
-
[in] timer
Pointer to TIMER peripheral register block.
- Returns
- Current TIMER counter value.
◆ TIMER_CounterSet()
|
inline |
Set TIMER counter value.
- Parameters
-
[in] timer
Pointer to TIMER peripheral register block. [in] val
Value to set counter to.
◆ TIMER_Enable()
|
inline |
Start/stop TIMER.
- Parameters
-
[in] timer
Pointer to 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 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 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 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 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 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 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 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()
|
inline |
Get enabled and pending TIMER interrupt flags.
Useful for handling more interrupt sources in the same interrupt handler.
- Parameters
-
[in] timer
Pointer to TIMER peripheral register block.
- Note
- Interrupt flags are not cleared by this function.
- Returns
-
Pending and enabled TIMER interrupt sources. The return value is the bitwise AND combination of
- the OR combination of enabled interrupt sources in TIMERx_IEN_nnn register (TIMERx_IEN_nnn) and
- the OR combination of valid interrupt flags of the TIMER module (TIMERx_IF_nnn).
◆ TIMER_IntSet()
|
inline |
Set one or more pending TIMER interrupts from SW.
- Parameters
-
[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.
◆ TIMER_Lock()
|
inline |
Lock some of the TIMER registers in order to protect them from being modified.
Refer to the reference manual for TIMER registers that will be locked.
- Note
- If locking the TIMER registers, they must be unlocked prior to using any TIMER API function that modifies TIMER registers protected by the lock.
- Parameters
-
[in] timer
Pointer to TIMER peripheral register block.
◆ TIMER_TopBufSet()
|
inline |
Set top value buffer for timer.
When top value buffer register is updated, value is loaded into top value register at the next wrap around. This feature is useful in order to update top value safely when timer is running.
- Parameters
-
[in] timer
Pointer to TIMER peripheral register block. [in] val
Value to set in top value buffer register.
◆ TIMER_TopGet()
|
inline |
Get top value setting for timer.
- Parameters
-
[in] timer
Pointer to TIMER peripheral register block.
- Returns
- Current top value.
◆ TIMER_TopSet()
|
inline |
Set top value for timer.
- Parameters
-
[in] timer
Pointer to TIMER peripheral register block. [in] val
Value to set in top value register.
◆ TIMER_Unlock()
|
inline |
Unlock TIMER to enable writing to locked registers again.
- Parameters
-
[in] timer
Pointer to TIMER peripheral register block.
Macro Definition Documentation
◆ TIMER_INIT_DEFAULT
#define TIMER_INIT_DEFAULT |
Default configuration for TIMER initialization structure.
◆ TIMER_INITCC_DEFAULT
#define TIMER_INITCC_DEFAULT |
Default configuration for TIMER compare/capture initialization structure.
◆ TIMER_INITDTI_DEFAULT
#define TIMER_INITDTI_DEFAULT |
Default configuration for TIMER DTI initialization structure.
Typedef Documentation
◆ TIMER_PRSSEL_TypeDef
typedef uint8_t TIMER_PRSSEL_TypeDef |
Peripheral Reflex System signal.
Enumeration Type Documentation
◆ TIMER_CCMode_TypeDef
enum TIMER_CCMode_TypeDef |
◆ TIMER_ClkSel_TypeDef
enum TIMER_ClkSel_TypeDef |
◆ TIMER_Edge_TypeDef
enum TIMER_Edge_TypeDef |
◆ TIMER_Event_TypeDef
enum TIMER_Event_TypeDef |
Input capture event control.
◆ TIMER_InputAction_TypeDef
◆ TIMER_Mode_TypeDef
enum TIMER_Mode_TypeDef |
◆ TIMER_OutputAction_TypeDef
◆ TIMER_Prescale_TypeDef
Prescaler.
◆ TIMER_DtiFaultAction_TypeDef
◆ TIMER_PrsOutput_t
enum TIMER_PrsOutput_t |