123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394 |
- typedef enum _lptmr_pin_select
- {
- kLPTMR_PinSelectInput_0 = 0x0U,
- kLPTMR_PinSelectInput_1 = 0x1U,
- kLPTMR_PinSelectInput_2 = 0x2U,
- kLPTMR_PinSelectInput_3 = 0x3U
- } lptmr_pin_select_t;
- typedef enum _lptmr_pin_polarity
- {
- kLPTMR_PinPolarityActiveHigh = 0x0U,
- kLPTMR_PinPolarityActiveLow = 0x1U
- } lptmr_pin_polarity_t;
- typedef enum _lptmr_timer_mode
- {
- kLPTMR_TimerModeTimeCounter = 0x0U,
- kLPTMR_TimerModePulseCounter = 0x1U
- } lptmr_timer_mode_t;
- typedef enum _lptmr_prescaler_glitch_value
- {
- 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_value_t;
- typedef enum _lptmr_prescaler_clock_select
- {
- kLPTMR_PrescalerClock_0 = 0x0U,
- kLPTMR_PrescalerClock_1 = 0x1U,
- kLPTMR_PrescalerClock_2 = 0x2U,
- kLPTMR_PrescalerClock_3 = 0x3U,
- } lptmr_prescaler_clock_select_t;
- typedef enum _lptmr_interrupt_enable
- {
- kLPTMR_TimerInterruptEnable = LPTMR_CSR_TIE_MASK,
- } lptmr_interrupt_enable_t;
- typedef enum _lptmr_status_flags
- {
- kLPTMR_TimerCompareFlag = LPTMR_CSR_TCF_MASK,
- } lptmr_status_flags_t;
- typedef struct _lptmr_config
- {
- lptmr_timer_mode_t timerMode;
- lptmr_pin_select_t pinSelect;
- lptmr_pin_polarity_t pinPolarity;
- bool enableFreeRunning;
- bool bypassPrescaler;
- lptmr_prescaler_clock_select_t prescalerClockSource;
- lptmr_prescaler_glitch_value_t value;
- } lptmr_config_t;
- extern "C" {
- void LPTMR_Init(LPTMR_Type *base, const lptmr_config_t *config);
- void LPTMR_Deinit(LPTMR_Type *base);
- void LPTMR_GetDefaultConfig(lptmr_config_t *config);
- static inline void LPTMR_EnableInterrupts(LPTMR_Type *base, uint32_t mask)
- {
- uint32_t reg = base->CSR;
-
- reg &= ~(LPTMR_CSR_TCF_MASK);
- reg |= mask;
- base->CSR = reg;
- }
- static inline void LPTMR_DisableInterrupts(LPTMR_Type *base, uint32_t mask)
- {
- uint32_t reg = base->CSR;
-
- reg &= ~(LPTMR_CSR_TCF_MASK);
- reg &= ~mask;
- base->CSR = reg;
- }
- static inline uint32_t LPTMR_GetEnabledInterrupts(LPTMR_Type *base)
- {
- return (base->CSR & LPTMR_CSR_TIE_MASK);
- }
- static inline void LPTMR_EnableTimerDMA(LPTMR_Type *base, bool enable)
- {
- if(enable)
- {
- base->CSR |= LPTMR_CSR_TDRE_MASK;
- }
- else
- {
- base->CSR &= ~(LPTMR_CSR_TDRE_MASK);
- }
- }
- static inline uint32_t LPTMR_GetStatusFlags(LPTMR_Type *base)
- {
- return (base->CSR & LPTMR_CSR_TCF_MASK);
- }
- static inline void LPTMR_ClearStatusFlags(LPTMR_Type *base, uint32_t mask)
- {
- base->CSR |= mask;
- }
- static inline void LPTMR_SetTimerPeriod(LPTMR_Type *base, uint32_t ticks)
- {
- assert(ticks > 0);
- base->CMR = ticks - 1;
- }
- static inline uint32_t LPTMR_GetCurrentTimerCount(LPTMR_Type *base)
- {
-
- base->CNR = 0U;
- return (uint32_t)((base->CNR & LPTMR_CNR_COUNTER_MASK) >> LPTMR_CNR_COUNTER_SHIFT);
- }
- static inline void LPTMR_StartTimer(LPTMR_Type *base)
- {
- uint32_t reg = base->CSR;
-
- reg &= ~(LPTMR_CSR_TCF_MASK);
- reg |= LPTMR_CSR_TEN_MASK;
- base->CSR = reg;
- }
- static inline void LPTMR_StopTimer(LPTMR_Type *base)
- {
- uint32_t reg = base->CSR;
-
- reg &= ~(LPTMR_CSR_TCF_MASK);
- reg &= ~LPTMR_CSR_TEN_MASK;
- base->CSR = reg;
- }
- }
|