The MCUXpresso SDK provides a driver for the Low-Power Timer (LPTMR) of MCUXpresso SDK devices.
Function groups
The LPTMR driver supports operating the module as a time counter or as a pulse counter.
Initialization and deinitialization
The function LPTMR_Init() initializes the LPTMR with specified configurations. The function LPTMR_GetDefaultConfig() gets the default configurations. The initialization function configures the LPTMR for a timer or a pulse counter mode mode. It also sets up the LPTMR's free running mode operation and a clock source.
The function LPTMR_DeInit() disables the LPTMR module and gates the module clock.
Timer period Operations
The function LPTMR_SetTimerPeriod() sets the timer period in units of count. Timers counts from 0 to the count value set here.
The function LPTMR_GetCurrentTimerCount() reads the current timer counting value. This function returns the real-time timer counting value ranging from 0 to a timer period.
The timer period operation function takes the count value in ticks. Call the utility macros provided in the fsl_common.h file to convert to microseconds or milliseconds.
Start and Stop timer operations
The function LPTMR_StartTimer() starts the timer counting. After calling this function, the timer counts up to the counter value set earlier by using the LPTMR_SetPeriod() function. Each time the timer reaches the count value and increments, it generates a trigger pulse and sets the timeout interrupt flag. An interrupt is also triggered if the timer interrupt is enabled.
The function LPTMR_StopTimer() stops the timer counting and resets the timer's counter register.
Status
Provides functions to get and clear the LPTMR status.
Interrupt
Provides functions to enable/disable LPTMR interrupts and get the currently enabled interrupts.
Typical use case
LPTMR tick example
Updates the LPTMR period and toggles an LED periodically.
int main(void)
{
uint32_t currentCounter = 0U;
LED_INIT();
BOARD_InitHardware();
EnableIRQ(LPTMR0_IRQn);
PRINTF("Low Power Timer Example\r\n");
while (1)
{
if (currentCounter != lptmrCounter)
{
currentCounter = lptmrCounter;
PRINTF("LPTMR interrupt No.%d \r\n", currentCounter);
}
}
}
|
enum | lptmr_pin_select_t {
kLPTMR_PinSelectInput_0 = 0x0U,
kLPTMR_PinSelectInput_1 = 0x1U,
kLPTMR_PinSelectInput_2 = 0x2U,
kLPTMR_PinSelectInput_3 = 0x3U
} |
| LPTMR pin selection used in pulse counter mode. More...
|
|
enum | lptmr_pin_polarity_t {
kLPTMR_PinPolarityActiveHigh = 0x0U,
kLPTMR_PinPolarityActiveLow = 0x1U
} |
| LPTMR pin polarity used in pulse counter mode. More...
|
|
enum | lptmr_timer_mode_t {
kLPTMR_TimerModeTimeCounter = 0x0U,
kLPTMR_TimerModePulseCounter = 0x1U
} |
| LPTMR timer mode selection. More...
|
|
enum | lptmr_prescaler_glitch_value_t {
kLPTMR_Prescale_Glitch_0 = 0x0U,
kLPTMR_Prescale_Glitch_1 = 0x1U,
kLPTMR_Prescale_Glitch_2 = 0x2U,
kLPTMR_Prescale_Glitch_3 = 0x3U,
kLPTMR_Prescale_Glitch_4 = 0x4U,
kLPTMR_Prescale_Glitch_5 = 0x5U,
kLPTMR_Prescale_Glitch_6 = 0x6U,
kLPTMR_Prescale_Glitch_7 = 0x7U,
kLPTMR_Prescale_Glitch_8 = 0x8U,
kLPTMR_Prescale_Glitch_9 = 0x9U,
kLPTMR_Prescale_Glitch_10 = 0xAU,
kLPTMR_Prescale_Glitch_11 = 0xBU,
kLPTMR_Prescale_Glitch_12 = 0xCU,
kLPTMR_Prescale_Glitch_13 = 0xDU,
kLPTMR_Prescale_Glitch_14 = 0xEU,
kLPTMR_Prescale_Glitch_15 = 0xFU
} |
| LPTMR prescaler/glitch filter values. More...
|
|
enum | lptmr_prescaler_clock_select_t {
kLPTMR_PrescalerClock_0 = 0x0U,
kLPTMR_PrescalerClock_1 = 0x1U,
kLPTMR_PrescalerClock_2 = 0x2U,
kLPTMR_PrescalerClock_3 = 0x3U
} |
| LPTMR prescaler/glitch filter clock select. More...
|
|
enum | lptmr_interrupt_enable_t { kLPTMR_TimerInterruptEnable = LPTMR_CSR_TIE_MASK
} |
| List of the LPTMR interrupts. More...
|
|
enum | lptmr_status_flags_t { kLPTMR_TimerCompareFlag = LPTMR_CSR_TCF_MASK
} |
| List of the LPTMR status flags. More...
|
|
This structure holds the configuration settings for the LPTMR peripheral. To initialize this structure to reasonable defaults, call the LPTMR_GetDefaultConfig() function and pass a pointer to your configuration structure instance.
The configuration struct can be made constant so it resides in flash.
Enumerator |
---|
kLPTMR_PinSelectInput_0 |
Pulse counter input 0 is selected.
|
kLPTMR_PinSelectInput_1 |
Pulse counter input 1 is selected.
|
kLPTMR_PinSelectInput_2 |
Pulse counter input 2 is selected.
|
kLPTMR_PinSelectInput_3 |
Pulse counter input 3 is selected.
|
Enumerator |
---|
kLPTMR_PinPolarityActiveHigh |
Pulse Counter input source is active-high.
|
kLPTMR_PinPolarityActiveLow |
Pulse Counter input source is active-low.
|
Enumerator |
---|
kLPTMR_TimerModeTimeCounter |
Time Counter mode.
|
kLPTMR_TimerModePulseCounter |
Pulse Counter mode.
|
Enumerator |
---|
kLPTMR_Prescale_Glitch_0 |
Prescaler divide 2, glitch filter does not support this setting.
|
kLPTMR_Prescale_Glitch_1 |
Prescaler divide 4, glitch filter 2.
|
kLPTMR_Prescale_Glitch_2 |
Prescaler divide 8, glitch filter 4.
|
kLPTMR_Prescale_Glitch_3 |
Prescaler divide 16, glitch filter 8.
|
kLPTMR_Prescale_Glitch_4 |
Prescaler divide 32, glitch filter 16.
|
kLPTMR_Prescale_Glitch_5 |
Prescaler divide 64, glitch filter 32.
|
kLPTMR_Prescale_Glitch_6 |
Prescaler divide 128, glitch filter 64.
|
kLPTMR_Prescale_Glitch_7 |
Prescaler divide 256, glitch filter 128.
|
kLPTMR_Prescale_Glitch_8 |
Prescaler divide 512, glitch filter 256.
|
kLPTMR_Prescale_Glitch_9 |
Prescaler divide 1024, glitch filter 512.
|
kLPTMR_Prescale_Glitch_10 |
Prescaler divide 2048 glitch filter 1024.
|
kLPTMR_Prescale_Glitch_11 |
Prescaler divide 4096, glitch filter 2048.
|
kLPTMR_Prescale_Glitch_12 |
Prescaler divide 8192, glitch filter 4096.
|
kLPTMR_Prescale_Glitch_13 |
Prescaler divide 16384, glitch filter 8192.
|
kLPTMR_Prescale_Glitch_14 |
Prescaler divide 32768, glitch filter 16384.
|
kLPTMR_Prescale_Glitch_15 |
Prescaler divide 65536, glitch filter 32768.
|
- Note
- Clock connections are SoC-specific
Enumerator |
---|
kLPTMR_PrescalerClock_0 |
Prescaler/glitch filter clock 0 selected.
|
kLPTMR_PrescalerClock_1 |
Prescaler/glitch filter clock 1 selected.
|
kLPTMR_PrescalerClock_2 |
Prescaler/glitch filter clock 2 selected.
|
kLPTMR_PrescalerClock_3 |
Prescaler/glitch filter clock 3 selected.
|
Enumerator |
---|
kLPTMR_TimerInterruptEnable |
Timer interrupt enable.
|
Enumerator |
---|
kLPTMR_TimerCompareFlag |
Timer compare flag.
|
- Note
- This API should be called at the beginning of the application using the LPTMR driver.
- Parameters
-
base | LPTMR peripheral base address |
config | A pointer to the LPTMR configuration structure. |
void LPTMR_Deinit |
( |
LPTMR_Type * |
base | ) |
|
- Parameters
-
base | LPTMR peripheral base address |
The default values are as follows.
* config->enableFreeRunning = false;
* config->bypassPrescaler = true;
*
- Parameters
-
config | A pointer to the LPTMR configuration structure. |
static void LPTMR_EnableInterrupts |
( |
LPTMR_Type * |
base, |
|
|
uint32_t |
mask |
|
) |
| |
|
inlinestatic |
- Parameters
-
base | LPTMR peripheral base address |
mask | The interrupts to enable. This is a logical OR of members of the enumeration lptmr_interrupt_enable_t |
static void LPTMR_DisableInterrupts |
( |
LPTMR_Type * |
base, |
|
|
uint32_t |
mask |
|
) |
| |
|
inlinestatic |
- Parameters
-
base | LPTMR peripheral base address |
mask | The interrupts to disable. This is a logical OR of members of the enumeration lptmr_interrupt_enable_t. |
static uint32_t LPTMR_GetEnabledInterrupts |
( |
LPTMR_Type * |
base | ) |
|
|
inlinestatic |
- Parameters
-
base | LPTMR peripheral base address |
- Returns
- The enabled interrupts. This is the logical OR of members of the enumeration lptmr_interrupt_enable_t
static uint32_t LPTMR_GetStatusFlags |
( |
LPTMR_Type * |
base | ) |
|
|
inlinestatic |
- Parameters
-
base | LPTMR peripheral base address |
- Returns
- The status flags. This is the logical OR of members of the enumeration lptmr_status_flags_t
static void LPTMR_ClearStatusFlags |
( |
LPTMR_Type * |
base, |
|
|
uint32_t |
mask |
|
) |
| |
|
inlinestatic |
- Parameters
-
base | LPTMR peripheral base address |
mask | The status flags to clear. This is a logical OR of members of the enumeration lptmr_status_flags_t. |
static void LPTMR_SetTimerPeriod |
( |
LPTMR_Type * |
base, |
|
|
uint32_t |
ticks |
|
) |
| |
|
inlinestatic |
Timers counts from 0 until it equals the count value set here. The count value is written to the CMR register.
- Note
- The TCF flag is set with the CNR equals the count provided here and then increments.
- Call the utility macros provided in the fsl_common.h to convert to ticks.
- Parameters
-
base | LPTMR peripheral base address |
ticks | A timer period in units of ticks, which should be equal or greater than 1. |
static uint32_t LPTMR_GetCurrentTimerCount |
( |
LPTMR_Type * |
base | ) |
|
|
inlinestatic |
This function returns the real-time timer counting value in a range from 0 to a timer period.
- Note
- Call the utility macros provided in the fsl_common.h to convert ticks to usec or msec.
- Parameters
-
base | LPTMR peripheral base address |
- Returns
- The current counter value in ticks
static void LPTMR_StartTimer |
( |
LPTMR_Type * |
base | ) |
|
|
inlinestatic |
After calling this function, the timer counts up to the CMR register value. Each time the timer reaches the CMR value and then increments, it generates a trigger pulse and sets the timeout interrupt flag. An interrupt is also triggered if the timer interrupt is enabled.
- Parameters
-
base | LPTMR peripheral base address |
static void LPTMR_StopTimer |
( |
LPTMR_Type * |
base | ) |
|
|
inlinestatic |
This function stops the timer and resets the timer's counter register.
- Parameters
-
base | LPTMR peripheral base address |