pit.h 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317
  1. /******************************************************************************
  2. * @brief Periodic Interrupt ETMer (PIT) driver head file.
  3. *
  4. ******************************************************************************/
  5. #ifndef PIT_H_
  6. #define PIT_H_
  7. #include"common.h"
  8. #ifdef __cplusplus
  9. extern "C" {
  10. #endif
  11. /******************************************************************************
  12. * Includes
  13. ******************************************************************************/
  14. /******************************************************************************
  15. * Constants
  16. ******************************************************************************/
  17. /******************************************************************************
  18. * PIT channel number list
  19. *
  20. *//*! @addtogroup pit_channelnumber
  21. * @{
  22. *******************************************************************************/
  23. enum
  24. {
  25. PIT_CHANNEL0 = 0, /*!< PIT channel 0 */
  26. PIT_CHANNEL1 /*!< PIT channel 1 */
  27. };
  28. /*! @} End of pit_channelnumber */
  29. /******************************************************************************
  30. * Macros
  31. ******************************************************************************/
  32. /******************************************************************************
  33. * Types
  34. ******************************************************************************/
  35. /*
  36. * Callback type
  37. */
  38. /******************************************************************************
  39. * PIT callback function declaration
  40. *
  41. *//*! @addtogroup pit_callback
  42. * @{
  43. *******************************************************************************/
  44. typedef void (*PIT_CallbackType)(void); /*!< PIT callback type */
  45. /*! @} End of pit_callback */
  46. /* PIT configuration structure
  47. */
  48. /*!
  49. * @brief PIT configuration type.
  50. *
  51. */
  52. typedef struct
  53. {
  54. uint8_t bFreeze : 1; /*!< 1: stop in debug mode, 0: run in debug mode */
  55. uint8_t bModuleDis : 1; /*!< 1: PIT module is disable, 0: PIT module is enable */
  56. uint8_t bReserved0 : 1; /*!< reserved bit */
  57. uint8_t bReserved1 : 5; /*!< reserved bit */
  58. uint8_t bETMerEn : 1; /*!< 1: channel ETMer is enable, 0: channel ETMer is disable */
  59. uint8_t bInterruptEn : 1; /*!< 1: channel ETMer interrupt is enable, 0: channel ETMer interrupt is disable */
  60. uint8_t bChainMode : 1; /*!< 1: chain mode is enable, 0: chain mode is disable */
  61. uint8_t bReserved2 : 5; /*!< reserved bit */
  62. uint8_t bFlag : 1; /*!< 1: flag is set,and write 1 to clear flag, 0: no flag is set */
  63. uint8_t bReserved3 : 7; /*!< reserved bit */
  64. uint32_t u32LoadValue ; /*!< 32-bit channel load value */
  65. } PIT_ConfigType, *PIT_ConfigPtr;
  66. /******************************************************************************
  67. * Global variables
  68. ******************************************************************************/
  69. /*!
  70. * inline functions
  71. */
  72. /******************************************************************************
  73. * PIT API list
  74. *
  75. *//*! @addtogroup pit_api_list
  76. * @{
  77. *******************************************************************************/
  78. /*****************************************************************************//*!
  79. *
  80. * @brief enable pit module.
  81. *
  82. * @param none
  83. *
  84. * @return none
  85. *
  86. * @ Pass/ Fail criteria: none
  87. *****************************************************************************/
  88. __STATIC_INLINE void PIT_Enable(void)
  89. {
  90. PIT->MCR &= ~PIT_MCR_MDIS_MASK;
  91. }
  92. /*****************************************************************************//*!
  93. *
  94. * @brief disable pit module.
  95. *
  96. * @param none
  97. *
  98. * @return none
  99. *
  100. * @ Pass/ Fail criteria: none
  101. *****************************************************************************/
  102. __STATIC_INLINE void PIT_Disable(void)
  103. {
  104. PIT->MCR |= PIT_MCR_MDIS_MASK;
  105. }
  106. /*****************************************************************************//*!
  107. *
  108. * @brief pit ETMers are stopped in debug mode.
  109. *
  110. * @param none
  111. *
  112. * @return none
  113. *
  114. * @ Pass/ Fail criteria: none
  115. *****************************************************************************/
  116. __STATIC_INLINE void PIT_SetDebugFreeze(void)
  117. {
  118. PIT->MCR |= PIT_MCR_FRZ_MASK;
  119. }
  120. /*****************************************************************************//*!
  121. *
  122. * @brief pit ETMers are running in debug mode.
  123. *
  124. * @param none
  125. *
  126. * @return none
  127. *
  128. * @ Pass/ Fail criteria: none
  129. *****************************************************************************/
  130. __STATIC_INLINE void PIT_SetDebugOn(void)
  131. {
  132. PIT->MCR &= ~PIT_MCR_FRZ_MASK;
  133. }
  134. /*****************************************************************************//*!
  135. *
  136. * @brief enable pit channel ETMer.
  137. *
  138. * @param[in] u8Channel.
  139. *
  140. * @return none
  141. *
  142. * @ Pass/ Fail criteria: none
  143. *****************************************************************************/
  144. __STATIC_INLINE void PIT_ChannelEnable(uint8_t u8Channel)
  145. {
  146. PIT->CHANNEL[u8Channel].TCTRL |= PIT_TCTRL_TEN_MASK;
  147. }
  148. /*****************************************************************************//*!
  149. *
  150. * @brief disable pit channel ETMer.
  151. *
  152. * @param[in] u8Channel.
  153. *
  154. * @return none
  155. *
  156. * @ Pass/ Fail criteria: none
  157. *****************************************************************************/
  158. __STATIC_INLINE void PIT_ChannelDisable(uint8_t u8Channel)
  159. {
  160. PIT->CHANNEL[u8Channel].TCTRL &= ~PIT_TCTRL_TEN_MASK;
  161. }
  162. /*****************************************************************************//*!
  163. *
  164. * @brief enable pit channel ETMer interrupt.
  165. *
  166. * @param[in] u8Channel.
  167. *
  168. * @return none
  169. *
  170. * @ Pass/ Fail criteria: none
  171. *****************************************************************************/
  172. __STATIC_INLINE void PIT_ChannelEnableInt(uint8_t u8Channel)
  173. {
  174. PIT->CHANNEL[u8Channel].TCTRL |= PIT_TCTRL_TIE_MASK;
  175. }
  176. /*****************************************************************************//*!
  177. *
  178. * @brief disable pit channel ETMer interrupt .
  179. *
  180. * @param[in] u8Channel.
  181. *
  182. * @return none
  183. *
  184. * @ Pass/ Fail criteria: none
  185. *****************************************************************************/
  186. __STATIC_INLINE void PIT_ChannelDisableInt(uint8_t u8Channel)
  187. {
  188. PIT->CHANNEL[u8Channel].TCTRL &= ~PIT_TCTRL_TIE_MASK;
  189. }
  190. /*****************************************************************************//*!
  191. *
  192. * @brief enable pit channel ETMer chain mode.
  193. *
  194. * @param[in] u8Channel.
  195. *
  196. * @return none
  197. *
  198. * @ Pass/ Fail criteria: none
  199. *****************************************************************************/
  200. __STATIC_INLINE void PIT_ChannelEnableChain(uint8_t u8Channel)
  201. {
  202. PIT->CHANNEL[u8Channel].TCTRL |= PIT_TCTRL_CHN_MASK;
  203. }
  204. /*****************************************************************************//*!
  205. *
  206. * @brief disable pit channel ETMer chain mode.
  207. *
  208. * @param[in] u8Channel.
  209. *
  210. * @return none
  211. *
  212. * @ Pass/ Fail criteria: none
  213. *****************************************************************************/
  214. __STATIC_INLINE void PIT_ChannelDisableChain(uint8_t u8Channel)
  215. {
  216. PIT->CHANNEL[u8Channel].TCTRL &= ~PIT_TCTRL_CHN_MASK;
  217. }
  218. /*****************************************************************************//*!
  219. *
  220. * @brief get pit channel ETMer interrrupt flag.
  221. *
  222. * @param[in] u8Channel.
  223. *
  224. * @return bflag.
  225. *
  226. * @ Pass/ Fail criteria: none
  227. *****************************************************************************/
  228. __STATIC_INLINE uint8_t PIT_ChannelGetFlags(uint8_t u8Channel)
  229. {
  230. uint8_t bflag;
  231. bflag = (PIT->CHANNEL[u8Channel].TFLG & PIT_TFLG_TIF_MASK);
  232. return bflag;
  233. }
  234. /*****************************************************************************//*!
  235. *
  236. * @brief clear pit channel ETMer interrrupt flag.
  237. *
  238. * @param[in] u8Channel
  239. *
  240. * @return none
  241. *
  242. * @ Pass/ Fail criteria: none
  243. *****************************************************************************/
  244. __STATIC_INLINE void PIT_ChannelClrFlags(uint8_t u8Channel)
  245. {
  246. PIT->CHANNEL[u8Channel].TFLG |= PIT_TFLG_TIF_MASK;
  247. }
  248. /******************************************************************************
  249. * Global functions
  250. ******************************************************************************/
  251. void PIT_Init(uint8_t u8Channel_No, PIT_ConfigType *pConfig);
  252. void PIT_SetLoadVal(uint8_t u8Channel, uint32_t u32loadvalue);
  253. void PIT_SetCallback(uint8_t u8Channel_No, PIT_CallbackType pfnCallback);
  254. void PIT_DeInit(void);
  255. /*! @} End of pit_api_list */
  256. #ifdef __cplusplus
  257. }
  258. #endif
  259. #endif /* PIT_H_ */