The KSDK provides a driver for the Low-Power Timer (LPTMR) of Kinetis 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 timer or pulse counter mode mode. It also sets up the LPTMR's free running mode operation and clock source.
The function LPTMR_DeInit() disables the LPTMR module and gate the module clock.
Timer period Operations
The function LPTMR_SetTimerPeriod() sets the timer period in units of count. Timers counts from 0 till it equals the count value set here.
The function LPTMR_GetCurrentTimerCount() reads the current timer counting value. This function returns the real-time timer counting value, in a range from 0 to a timer period.
The timer period operation functions takes the count value in ticks. User can call the utility macros provided in fsl_common.h 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 count value set earlier via the LPTMR_SetPeriod() function. Each time the timer reaches count 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.
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 current 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 LPTMR interrupts. More...
|
|
enum | lptmr_status_flags_t { kLPTMR_TimerCompareFlag = LPTMR_CSR_TCF_MASK
} |
| List of 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 config structure instance.
The config struct can be made const 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 | Pointer to user's LPTMR config structure. |
void LPTMR_Deinit |
( |
LPTMR_Type * |
base | ) |
|
- Parameters
-
base | LPTMR peripheral base address |
The default values are:
* config->enableFreeRunning = false;
* config->bypassPrescaler = true;
*
- Parameters
-
config | Pointer to user's LPTMR config 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, |
|
|
uint16_t |
ticks |
|
) |
| |
|
inlinestatic |
Timers counts from 0 till 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.
- User can call the utility macros provided in fsl_common.h to convert to ticks
- Parameters
-
base | LPTMR peripheral base address |
ticks | Timer period in units of ticks |
static uint16_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
- User can call the utility macros provided in fsl_common.h to convert ticks to usec or msec
- Parameters
-
base | LPTMR peripheral base address |
- Returns
- 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 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 counting and resets the timer's counter register
- Parameters
-
base | LPTMR peripheral base address |