| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213 |
- /******************************************************************************
- * @brief Periodic Interrupt ETMer (PIT) source code.
- *
- ******************************************************************************/
- #include "common.h"
- #include "pit.h"
- /******************************************************************************
- * Global variables
- ******************************************************************************/
- /******************************************************************************
- * Constants and macros
- ******************************************************************************/
- /******************************************************************************
- * Local types
- ******************************************************************************/
- /******************************************************************************
- * Local function prototypes
- ******************************************************************************/
- /******************************************************************************
- * Local variables
- ******************************************************************************/
- /*!
- * @brief global variable to store PIT callbacks.
- *
- */
- PIT_CallbackType PIT_Callback[2] = {(PIT_CallbackType)NULL}; /*!< PIT initial callback */
- /******************************************************************************
- * Local functions
- ******************************************************************************/
- void PIT_Ch0Isr(void);
- void PIT_Ch1Isr(void);
- /******************************************************************************
- * Global functions
- ******************************************************************************/
- /******************************************************************************
- * define PIT APIs
- *
- *//*! @addtogroup pit_api_list
- * @{
- *******************************************************************************/
- /*****************************************************************************//*!
- *
- * @brief initialize pit module.
- *
- * @param[in] u8Channel_No channel number
- * @param[in] pConfig point to configuration
- *
- * @return none
- *
- * @ Pass/ Fail criteria: none
- *****************************************************************************/
- void PIT_Init(uint8_t u8Channel_No, PIT_ConfigType *pConfig)
- {
- SIM->SCGC |= SIM_SCGC_PIT_MASK; /*!< enable clock to PIT */
-
- if (pConfig->bFreeze)
- {
- PIT_SetDebugFreeze();
- }
-
- if (pConfig->bModuleDis == 0)
- {
- PIT_Enable(); /*!< enable pit module */
- }
-
- PIT_SetLoadVal(u8Channel_No, pConfig->u32LoadValue);
-
- if (pConfig->bInterruptEn)
- {
- if (u8Channel_No)
- {
- NVIC_EnableIRQ(PIT_CH1_IRQn);
- }
- else
- {
- NVIC_EnableIRQ(PIT_CH0_IRQn);
- }
- PIT_ChannelEnableInt(u8Channel_No);
- }
- else
- {
- NVIC_DisableIRQ(PIT_CH0_IRQn);
- }
- if (pConfig->bChainMode)
- {
- PIT_ChannelEnableChain(u8Channel_No);
- }
-
- if (pConfig->bETMerEn)
- {
- PIT_ChannelEnable(u8Channel_No);
- }
- }
- /*****************************************************************************//*!
- *
- * @brief initialize pit module.
- *
- * @param[in] u8Channel_No channel number
- * @param[in] u32loadvalue load value for pit register
- *
- * @return none
- *
- * @ Pass/ Fail criteria: none
- *****************************************************************************/
- void PIT_SetLoadVal(uint8_t u8Channel, uint32_t u32loadvalue)
- {
- PIT->CHANNEL[u8Channel].LDVAL = u32loadvalue;
- }
- /*****************************************************************************//*!
- *
- * @brief pit module set call back.
- *
- * @param[in] u8Channel_No channel number.
- * @param[in] pfnCallback point to call back.
- *
- * @return none
- *
- * @ Pass/ Fail criteria: none
- *****************************************************************************/
- void PIT_SetCallback(uint8_t u8Channel_No, PIT_CallbackType pfnCallback)
- {
- PIT_Callback[u8Channel_No] = pfnCallback;
- }
- /*****************************************************************************//*!
- *
- * @brief pit module de-initialize, reset pit register
- *
- * @param none
- *
- * @return none
- *
- * @ Pass/ Fail criteria: none
- *****************************************************************************/
- void PIT_DeInit(void)
- {
- NVIC_DisableIRQ(PIT_CH0_IRQn);
- NVIC_DisableIRQ(PIT_CH1_IRQn);
- PIT_SetLoadVal(0,0);
- PIT_SetLoadVal(1,0);
- PIT_ChannelDisable(0);
- PIT_ChannelDisable(1);
- PIT_ChannelDisableInt(0);
- PIT_ChannelDisableInt(1);
- PIT_ChannelDisableChain(0);
- PIT_ChannelDisableChain(1);
- PIT_ChannelClrFlags(0);
- PIT_ChannelClrFlags(1);
- PIT_SetDebugOn();
- PIT_Disable();
- SIM->SCGC &= ~SIM_SCGC_PIT_MASK;
- }
- /*! @} End of pit_api_list */
- /*****************************************************************************//*!
- *
- * @brief pit module channel 0 isr.
- *
- * @param none
- *
- * @return none
- *
- * @ Pass/ Fail criteria: none
- *****************************************************************************/
- void PIT_Ch0Isr(void)
- {
- PIT_ChannelClrFlags(0);
-
- if (PIT_Callback[0])
- {
- PIT_Callback[0]();
- }
- }
-
- /*****************************************************************************//*!
- *
- * @brief pit module channel 1 isr.
- *
- * @param none
- *
- * @return none
- *
- * @ Pass/ Fail criteria: none
- *****************************************************************************/
- void PIT_Ch1Isr(void)
- {
- PIT_ChannelClrFlags(1);
- if (PIT_Callback[1])
- {
- PIT_Callback[1]();
- }
- }
|