123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317 |
- /******************************************************************************
- * @brief Periodic Interrupt ETMer (PIT) driver head file.
- *
- ******************************************************************************/
- #ifndef PIT_H_
- #define PIT_H_
- #include"common.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- /******************************************************************************
- * Includes
- ******************************************************************************/
- /******************************************************************************
- * Constants
- ******************************************************************************/
- /******************************************************************************
- * PIT channel number list
- *
- *//*! @addtogroup pit_channelnumber
- * @{
- *******************************************************************************/
- enum
- {
- PIT_CHANNEL0 = 0, /*!< PIT channel 0 */
- PIT_CHANNEL1 /*!< PIT channel 1 */
- };
- /*! @} End of pit_channelnumber */
- /******************************************************************************
- * Macros
- ******************************************************************************/
- /******************************************************************************
- * Types
- ******************************************************************************/
- /*
- * Callback type
- */
- /******************************************************************************
- * PIT callback function declaration
- *
- *//*! @addtogroup pit_callback
- * @{
- *******************************************************************************/
- typedef void (*PIT_CallbackType)(void); /*!< PIT callback type */
- /*! @} End of pit_callback */
- /* PIT configuration structure
- */
- /*!
- * @brief PIT configuration type.
- *
- */
- typedef struct
- {
- uint8_t bFreeze : 1; /*!< 1: stop in debug mode, 0: run in debug mode */
- uint8_t bModuleDis : 1; /*!< 1: PIT module is disable, 0: PIT module is enable */
- uint8_t bReserved0 : 1; /*!< reserved bit */
- uint8_t bReserved1 : 5; /*!< reserved bit */
- uint8_t bETMerEn : 1; /*!< 1: channel ETMer is enable, 0: channel ETMer is disable */
- uint8_t bInterruptEn : 1; /*!< 1: channel ETMer interrupt is enable, 0: channel ETMer interrupt is disable */
- uint8_t bChainMode : 1; /*!< 1: chain mode is enable, 0: chain mode is disable */
- uint8_t bReserved2 : 5; /*!< reserved bit */
- uint8_t bFlag : 1; /*!< 1: flag is set,and write 1 to clear flag, 0: no flag is set */
- uint8_t bReserved3 : 7; /*!< reserved bit */
- uint32_t u32LoadValue ; /*!< 32-bit channel load value */
- } PIT_ConfigType, *PIT_ConfigPtr;
- /******************************************************************************
- * Global variables
- ******************************************************************************/
- /*!
- * inline functions
- */
- /******************************************************************************
- * PIT API list
- *
- *//*! @addtogroup pit_api_list
- * @{
- *******************************************************************************/
- /*****************************************************************************//*!
- *
- * @brief enable pit module.
- *
- * @param none
- *
- * @return none
- *
- * @ Pass/ Fail criteria: none
- *****************************************************************************/
- __STATIC_INLINE void PIT_Enable(void)
- {
- PIT->MCR &= ~PIT_MCR_MDIS_MASK;
-
- }
- /*****************************************************************************//*!
- *
- * @brief disable pit module.
- *
- * @param none
- *
- * @return none
- *
- * @ Pass/ Fail criteria: none
- *****************************************************************************/
- __STATIC_INLINE void PIT_Disable(void)
- {
- PIT->MCR |= PIT_MCR_MDIS_MASK;
- }
- /*****************************************************************************//*!
- *
- * @brief pit ETMers are stopped in debug mode.
- *
- * @param none
- *
- * @return none
- *
- * @ Pass/ Fail criteria: none
- *****************************************************************************/
- __STATIC_INLINE void PIT_SetDebugFreeze(void)
- {
- PIT->MCR |= PIT_MCR_FRZ_MASK;
- }
- /*****************************************************************************//*!
- *
- * @brief pit ETMers are running in debug mode.
- *
- * @param none
- *
- * @return none
- *
- * @ Pass/ Fail criteria: none
- *****************************************************************************/
- __STATIC_INLINE void PIT_SetDebugOn(void)
- {
- PIT->MCR &= ~PIT_MCR_FRZ_MASK;
- }
- /*****************************************************************************//*!
- *
- * @brief enable pit channel ETMer.
- *
- * @param[in] u8Channel.
- *
- * @return none
- *
- * @ Pass/ Fail criteria: none
- *****************************************************************************/
- __STATIC_INLINE void PIT_ChannelEnable(uint8_t u8Channel)
- {
- PIT->CHANNEL[u8Channel].TCTRL |= PIT_TCTRL_TEN_MASK;
- }
- /*****************************************************************************//*!
- *
- * @brief disable pit channel ETMer.
- *
- * @param[in] u8Channel.
- *
- * @return none
- *
- * @ Pass/ Fail criteria: none
- *****************************************************************************/
- __STATIC_INLINE void PIT_ChannelDisable(uint8_t u8Channel)
- {
- PIT->CHANNEL[u8Channel].TCTRL &= ~PIT_TCTRL_TEN_MASK;
- }
- /*****************************************************************************//*!
- *
- * @brief enable pit channel ETMer interrupt.
- *
- * @param[in] u8Channel.
- *
- * @return none
- *
- * @ Pass/ Fail criteria: none
- *****************************************************************************/
- __STATIC_INLINE void PIT_ChannelEnableInt(uint8_t u8Channel)
- {
- PIT->CHANNEL[u8Channel].TCTRL |= PIT_TCTRL_TIE_MASK;
- }
- /*****************************************************************************//*!
- *
- * @brief disable pit channel ETMer interrupt .
- *
- * @param[in] u8Channel.
- *
- * @return none
- *
- * @ Pass/ Fail criteria: none
- *****************************************************************************/
- __STATIC_INLINE void PIT_ChannelDisableInt(uint8_t u8Channel)
- {
- PIT->CHANNEL[u8Channel].TCTRL &= ~PIT_TCTRL_TIE_MASK;
- }
- /*****************************************************************************//*!
- *
- * @brief enable pit channel ETMer chain mode.
- *
- * @param[in] u8Channel.
- *
- * @return none
- *
- * @ Pass/ Fail criteria: none
- *****************************************************************************/
- __STATIC_INLINE void PIT_ChannelEnableChain(uint8_t u8Channel)
- {
- PIT->CHANNEL[u8Channel].TCTRL |= PIT_TCTRL_CHN_MASK;
- }
- /*****************************************************************************//*!
- *
- * @brief disable pit channel ETMer chain mode.
- *
- * @param[in] u8Channel.
- *
- * @return none
- *
- * @ Pass/ Fail criteria: none
- *****************************************************************************/
- __STATIC_INLINE void PIT_ChannelDisableChain(uint8_t u8Channel)
- {
- PIT->CHANNEL[u8Channel].TCTRL &= ~PIT_TCTRL_CHN_MASK;
- }
- /*****************************************************************************//*!
- *
- * @brief get pit channel ETMer interrrupt flag.
- *
- * @param[in] u8Channel.
- *
- * @return bflag.
- *
- * @ Pass/ Fail criteria: none
- *****************************************************************************/
- __STATIC_INLINE uint8_t PIT_ChannelGetFlags(uint8_t u8Channel)
- {
- uint8_t bflag;
-
- bflag = (PIT->CHANNEL[u8Channel].TFLG & PIT_TFLG_TIF_MASK);
-
- return bflag;
-
- }
- /*****************************************************************************//*!
- *
- * @brief clear pit channel ETMer interrrupt flag.
- *
- * @param[in] u8Channel
- *
- * @return none
- *
- * @ Pass/ Fail criteria: none
- *****************************************************************************/
- __STATIC_INLINE void PIT_ChannelClrFlags(uint8_t u8Channel)
- {
- PIT->CHANNEL[u8Channel].TFLG |= PIT_TFLG_TIF_MASK;
- }
- /******************************************************************************
- * Global functions
- ******************************************************************************/
- void PIT_Init(uint8_t u8Channel_No, PIT_ConfigType *pConfig);
- void PIT_SetLoadVal(uint8_t u8Channel, uint32_t u32loadvalue);
- void PIT_SetCallback(uint8_t u8Channel_No, PIT_CallbackType pfnCallback);
- void PIT_DeInit(void);
- /*! @} End of pit_api_list */
- #ifdef __cplusplus
- }
- #endif
- #endif /* PIT_H_ */
|