123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- #include "fsl_pit.h"
- static uint32_t PIT_GetInstance(PIT_Type *base);
- static PIT_Type *const s_pitBases[] = PIT_BASE_PTRS;
- #if !(defined(FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL) && FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL)
- static const clock_ip_name_t s_pitClocks[] = PIT_CLOCKS;
- #endif
- static uint32_t PIT_GetInstance(PIT_Type *base)
- {
- uint32_t instance;
-
- for (instance = 0; instance < ARRAY_SIZE(s_pitBases); instance++)
- {
- if (s_pitBases[instance] == base)
- {
- break;
- }
- }
- assert(instance < ARRAY_SIZE(s_pitBases));
- return instance;
- }
- void PIT_Init(PIT_Type *base, const pit_config_t *config)
- {
- assert(config);
- #if !(defined(FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL) && FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL)
-
- CLOCK_EnableClock(s_pitClocks[PIT_GetInstance(base)]);
- #endif
- #if defined(FSL_FEATURE_PIT_HAS_MDIS) && FSL_FEATURE_PIT_HAS_MDIS
-
- base->MCR &= ~PIT_MCR_MDIS_MASK;
- #endif
-
- if (config->enableRunInDebug)
- {
- base->MCR &= ~PIT_MCR_FRZ_MASK;
- }
- else
- {
- base->MCR |= PIT_MCR_FRZ_MASK;
- }
- }
- void PIT_Deinit(PIT_Type *base)
- {
- #if defined(FSL_FEATURE_PIT_HAS_MDIS) && FSL_FEATURE_PIT_HAS_MDIS
-
- base->MCR |= PIT_MCR_MDIS_MASK;
- #endif
- #if !(defined(FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL) && FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL)
-
- CLOCK_DisableClock(s_pitClocks[PIT_GetInstance(base)]);
- #endif
- }
- #if defined(FSL_FEATURE_PIT_HAS_LIFETIME_TIMER) && FSL_FEATURE_PIT_HAS_LIFETIME_TIMER
- uint64_t PIT_GetLifetimeTimerCount(PIT_Type *base)
- {
- uint32_t valueH = 0U;
- uint32_t valueL = 0U;
-
- valueH = base->LTMR64H;
- valueL = base->LTMR64L;
- return (((uint64_t)valueH << 32U) + (uint64_t)(valueL));
- }
- #endif
|