hc32_ll_tmr6.h 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861
  1. /**
  2. *******************************************************************************
  3. * @file hc32_ll_tmr6.h
  4. * @brief Head file for TMR6 module.
  5. *
  6. @verbatim
  7. Change Logs:
  8. Date Author Notes
  9. 2022-12-31 CDT First version
  10. @endverbatim
  11. *******************************************************************************
  12. * Copyright (C) 2022, Xiaohua Semiconductor Co., Ltd. All rights reserved.
  13. *
  14. * This software component is licensed by XHSC under BSD 3-Clause license
  15. * (the "License"); You may not use this file except in compliance with the
  16. * License. You may obtain a copy of the License at:
  17. * opensource.org/licenses/BSD-3-Clause
  18. *
  19. *******************************************************************************
  20. */
  21. #ifndef __HC32_LL_TMR6_H__
  22. #define __HC32_LL_TMR6_H__
  23. /* C binding of definitions if building with C++ compiler */
  24. #ifdef __cplusplus
  25. extern "C"
  26. {
  27. #endif
  28. /*******************************************************************************
  29. * Include files
  30. ******************************************************************************/
  31. #include "hc32_ll_def.h"
  32. #include "hc32f4xx.h"
  33. #include "hc32f4xx_conf.h"
  34. /**
  35. * @addtogroup LL_Driver
  36. * @{
  37. */
  38. /**
  39. * @addtogroup LL_TMR6
  40. * @{
  41. */
  42. #if (LL_TMR6_ENABLE == DDL_ON)
  43. /*******************************************************************************
  44. * Global type definitions ('typedef')
  45. ******************************************************************************/
  46. /**
  47. * @defgroup TMR6_Global_Types TMR6 Global Types
  48. * @{
  49. */
  50. /**
  51. * @brief Timer6 count function structure definition
  52. */
  53. typedef struct {
  54. uint8_t u8CountSrc; /*!< Specifies the count source @ref TMR6_Count_Src_Define */
  55. union {
  56. struct {
  57. uint32_t u32ClockDiv; /*!< Count clock division select, @ref TMR6_Count_Clock_Define */
  58. uint32_t u32CountMode; /*!< Count mode, @ref TMR6_Count_Mode_Define */
  59. uint32_t u32CountDir; /*!< Count direction, @ref TMR6_Count_Dir_Define */
  60. } sw_count;
  61. struct {
  62. uint32_t u32CountUpCond; /*!< Hardware count up condition. @ref TMR6_HW_Count_Up_Cond_Define */
  63. uint32_t u32CountDownCond; /*!< Hardware count down condition. @ref TMR6_HW_Count_Down_Cond_Define */
  64. uint32_t u32Reserved; /*!< Reserved */
  65. } hw_count;
  66. };
  67. uint32_t u32PeriodValue; /*!< The period reference value. (0x00 ~ 0xFFFF) or (0x00 ~ 0xFFFFFFFF) */
  68. uint32_t u32CountReload; /*!< Count reload after overflow @ref TMR6_Count_Reload_Define */
  69. } stc_tmr6_init_t;
  70. /**
  71. * @brief Timer6 pwm output function structure definition
  72. */
  73. typedef struct {
  74. uint32_t u32CompareValue; /*!< Range (0 ~ 0xFFFF) or (0 ~ 0xFFFFFFFF) */
  75. uint32_t u32StartPolarity; /*!< Pin polarity when count start @ref TMR6_Pin_Polarity_Define */
  76. uint32_t u32StopPolarity; /*!< Pin polarity when count stop @ref TMR6_Pin_Polarity_Define */
  77. uint32_t u32CountUpMatchAPolarity; /*!< Port state when match compare register A(GCMAR) at count-up mode \
  78. @ref TMR6_Pin_Polarity_Define */
  79. uint32_t u32CountDownMatchAPolarity; /*!< Port state when match compare register A(GCMAR) at count-down mode \
  80. @ref TMR6_Pin_Polarity_Define */
  81. uint32_t u32CountUpMatchBPolarity; /*!< Port state when match compare register B(GCMBR) at count-up mode \
  82. @ref TMR6_Pin_Polarity_Define*/
  83. uint32_t u32CountDownMatchBPolarity; /*!< Port state when match compare register B(GCMBR) at count-down mode\
  84. @ref TMR6_Pin_Polarity_Define */
  85. uint32_t u32UdfPolarity; /*!< Pin polarity when underflow @ref TMR6_Pin_Polarity_Define */
  86. uint32_t u32OvfPolarity; /*!< Pin polarity when overflow @ref TMR6_Pin_Polarity_Define */
  87. } stc_tmr6_pwm_init_t;
  88. /**
  89. * @brief Timer6 buffer function configuration structure definition
  90. */
  91. typedef struct {
  92. uint32_t u32BufNum; /*!< The buffer number, and this parameter can be a value of \
  93. @ref TMR6_Buf_Num_Define */
  94. uint32_t u32BufTransCond; /*!< The buffer send time, and this parameter can be a value of \
  95. @ref TMR6_Buf_Trans_Cond_Define */
  96. } stc_tmr6_buf_config_t;
  97. /**
  98. * @brief Timer6 Valid period function configuration structure definition
  99. */
  100. typedef struct {
  101. uint32_t u32CountCond; /*!< The count condition, and this parameter can be a value of \
  102. @ref TMR6_Valid_Period_Count_Cond_Define */
  103. uint32_t u32PeriodInterval; /*!< The interval of the valid period @ref TMR6_Valid_Period_Count_Define */
  104. } stc_tmr6_valid_period_config_t;
  105. /**
  106. * @brief Timer6 EMB configuration structure definition
  107. */
  108. typedef struct {
  109. uint32_t u32ValidCh; /*!< Valid EMB event channel @ref TMR6_Emb_Ch_Define */
  110. uint32_t u32ReleaseMode; /*!< Pin release mode when EMB event invalid @ref TMR6_Emb_Release_Mode_Define */
  111. uint32_t u32PinStatus; /*!< Pin output status when EMB event valid @ref TMR6_Emb_Pin_Status_Define */
  112. } stc_tmr6_emb_config_t;
  113. /**
  114. * @brief Timer6 Dead time function configuration structure definition
  115. */
  116. typedef struct {
  117. uint32_t u32EqualUpDown; /*!< Enable down count dead time register equal to up count DT register \
  118. @ref TMR6_Deadtime_Reg_Equal_Func_Define */
  119. uint32_t u32BufUp; /*!< Enable buffer transfer for up count dead time register (DTUBR-->DTUAR) \
  120. @ref TMR6_Deadtime_CountUp_Buf_Func_Define*/
  121. uint32_t u32BufDown; /*!< Enable buffer transfer for down count dead time register (DTDBR-->DTDAR) \
  122. @ref TMR6_Deadtime_CountDown_Buf_Func_Define*/
  123. uint32_t u32BufTransCond; /*!< Buffer transfer condition for triangular wave mode \
  124. @ref TMR6_Deadtime_Buf_Trans_Cond_Define */
  125. } stc_tmr6_deadtime_config_t;
  126. /**
  127. * @brief Timer6 Dead time function configuration structure definition
  128. */
  129. typedef struct {
  130. uint32_t u32ZMaskCycle; /*!< Z phase input mask periods selection @ref TMR6_Zmask_Cycle_Define */
  131. uint32_t u32PosCountMaskFunc; /*!< As position count timer, clear function enable(TRUE) or disable(FALSE) during \
  132. the time of Z phase input mask @ref TMR6_Zmask_Pos_Unit_Clear_Func_Define */
  133. uint32_t u32RevoCountMaskFunc; /*!< As revolution count timer, the counter function enable(TRUE) or disable(FALSE) \
  134. during the time of Z phase input mask \
  135. @ref TMR6_Zmask_Revo_Unit_Count_Func_Define*/
  136. } stc_tmr6_zmask_config_t;
  137. /**
  138. * @}
  139. */
  140. /*******************************************************************************
  141. * Global pre-processor symbols/macros ('#define')
  142. ******************************************************************************/
  143. /**
  144. * @defgroup TMR6_Global_Macros TMR6 Global Macros
  145. * @{
  146. */
  147. /**
  148. * @defgroup TMR6_Count_Src_Define TMR6 Count Source Define
  149. * @{
  150. */
  151. #define TMR6_CNT_SRC_SW (0U) /*!< Timer6 normal count function */
  152. #define TMR6_CNT_SRC_HW (1U) /*!< Timer6 hardware count function */
  153. /**
  154. * @}
  155. */
  156. /**
  157. * @defgroup TMR6_Stat_Flag_Define TMR6 Status Flag Define
  158. * @{
  159. */
  160. #define TMR6_FLAG_MATCH_A (TMR6_STFLR_CMAF) /*!< GCMAR match counter */
  161. #define TMR6_FLAG_MATCH_B (TMR6_STFLR_CMBF) /*!< GCMBR match counter */
  162. #define TMR6_FLAG_MATCH_C (TMR6_STFLR_CMCF) /*!< GCMCR match counter */
  163. #define TMR6_FLAG_MATCH_D (TMR6_STFLR_CMDF) /*!< GCMDR match counter */
  164. #define TMR6_FLAG_MATCH_E (TMR6_STFLR_CMEF) /*!< GCMER match counter */
  165. #define TMR6_FLAG_MATCH_F (TMR6_STFLR_CMFF) /*!< GCMFR match counter */
  166. #define TMR6_FLAG_OVF (TMR6_STFLR_OVFF) /*!< Sawtooth wave counter overflow, \
  167. Triangular wave peak point */
  168. #define TMR6_FLAG_UDF (TMR6_STFLR_UDFF) /*!< Sawtooth wave counter underflow, \
  169. Triangular wave valley point */
  170. #define TMR6_FLAG_DEAD_TIME_ERR (TMR6_STFLR_DTEF) /*!< Dead time error */
  171. #define TMR6_FLAG_UP_CNT_SPECIAL_MATCH_A (TMR6_STFLR_CMSAUF) /*!< SCMAR match counter when count-up */
  172. #define TMR6_FLAG_DOWN_CNT_SPECIAL_MATCH_A (TMR6_STFLR_CMSADF) /*!< SCMAR match counter when count-down */
  173. #define TMR6_FLAG_UP_CNT_SPECIAL_MATCH_B (TMR6_STFLR_CMSBUF) /*!< SCMBR match counter when count-up */
  174. #define TMR6_FLAG_DOWN_CNT_SPECIAL_MATCH_B (TMR6_STFLR_CMSBDF) /*!< SCMBR match counter when count-down */
  175. #define TMR6_FLAG_CNT_DIR (TMR6_STFLR_DIRF) /*!< Count direction flag */
  176. #define TMR6_FLAG_CAPT_AGAIN_A (TMR6_STFLR_CMAF2) /*!< Capture A again flag */
  177. #define TMR6_FLAG_CAPT_AGAIN_B (TMR6_STFLR_CMBF2) /*!< Capture B again flag */
  178. #define TMR6_FLAG_CLR_ALL (0x0C001EFFUL) /*!< Clear all flag */
  179. #define TMR6_FLAG_ALL (TMR6_FLAG_MATCH_A | TMR6_FLAG_MATCH_B | TMR6_FLAG_MATCH_C | \
  180. TMR6_FLAG_MATCH_D | TMR6_FLAG_MATCH_E | TMR6_FLAG_MATCH_F | \
  181. TMR6_FLAG_OVF | TMR6_FLAG_UDF | TMR6_FLAG_DEAD_TIME_ERR | \
  182. TMR6_FLAG_UP_CNT_SPECIAL_MATCH_A | TMR6_FLAG_DOWN_CNT_SPECIAL_MATCH_A | \
  183. TMR6_FLAG_UP_CNT_SPECIAL_MATCH_B | TMR6_FLAG_DOWN_CNT_SPECIAL_MATCH_B | \
  184. TMR6_FLAG_CNT_DIR | TMR6_FLAG_CAPT_AGAIN_A | TMR6_FLAG_CAPT_AGAIN_B)
  185. /**
  186. * @}
  187. */
  188. /**
  189. * @defgroup TMR6_Int_Flag_Define TMR6 Interrupt Flag Define
  190. * @{
  191. */
  192. #define TMR6_INT_MATCH_A (TMR6_ICONR_INTENA) /*!< GCMAR register matched */
  193. #define TMR6_INT_MATCH_B (TMR6_ICONR_INTENB) /*!< GCMBR register matched */
  194. #define TMR6_INT_MATCH_C (TMR6_ICONR_INTENC) /*!< GCMCR register matched */
  195. #define TMR6_INT_MATCH_D (TMR6_ICONR_INTEND) /*!< GCMDR register matched */
  196. #define TMR6_INT_MATCH_E (TMR6_ICONR_INTENE) /*!< GCMER register matched */
  197. #define TMR6_INT_MATCH_F (TMR6_ICONR_INTENF) /*!< GCMFR register matched */
  198. #define TMR6_INT_OVF (TMR6_ICONR_INTENOVF) /*!< Counter register overflow */
  199. #define TMR6_INT_UDF (TMR6_ICONR_INTENUDF) /*!< Counter register underflow */
  200. #define TMR6_INT_DEAD_TIME_ERR (TMR6_ICONR_INTENDTE) /*!< Dead time error */
  201. #define TMR6_INT_UP_CNT_SPECIAL_MATCH_A (TMR6_ICONR_INTENSAU) /*!< SCMAR register matched when count-up */
  202. #define TMR6_INT_DOWN_CNT_SPECIAL_MATCH_A (TMR6_ICONR_INTENSAD) /*!< SCMAR register matched when count-down */
  203. #define TMR6_INT_UP_CNT_SPECIAL_MATCH_B (TMR6_ICONR_INTENSBU) /*!< SCMBR register matched when count-up */
  204. #define TMR6_INT_DOWN_CNT_SPECIAL_MATCH_B (TMR6_ICONR_INTENSBD) /*!< SCMBR register matched when count-down */
  205. #define TMR6_INT_ALL (TMR6_INT_MATCH_A | TMR6_INT_MATCH_B | TMR6_INT_MATCH_C | TMR6_INT_MATCH_D |\
  206. TMR6_INT_MATCH_E | TMR6_INT_MATCH_F | TMR6_INT_OVF | TMR6_INT_UDF | \
  207. TMR6_INT_DEAD_TIME_ERR | TMR6_INT_UP_CNT_SPECIAL_MATCH_A | \
  208. TMR6_INT_DOWN_CNT_SPECIAL_MATCH_A | TMR6_INT_UP_CNT_SPECIAL_MATCH_B | \
  209. TMR6_INT_DOWN_CNT_SPECIAL_MATCH_B)
  210. /**
  211. * @}
  212. */
  213. /**
  214. * @defgroup TMR6_Period_Reg_Index_Define TMR6 Period Register Index Define
  215. * @{
  216. */
  217. #define TMR6_PERIOD_REG_A (0x00UL)
  218. #define TMR6_PERIOD_REG_B (0x01UL)
  219. #define TMR6_PERIOD_REG_C (0x02UL)
  220. /**
  221. * @}
  222. */
  223. /**
  224. * @defgroup TMR6_Compare_Reg_Index_Define TMR6 Compare Register Index Define
  225. * @{
  226. */
  227. #define TMR6_CMP_REG_A (0x00UL)
  228. #define TMR6_CMP_REG_B (0x01UL)
  229. #define TMR6_CMP_REG_C (0x02UL)
  230. #define TMR6_CMP_REG_D (0x03UL)
  231. #define TMR6_CMP_REG_E (0x04UL)
  232. #define TMR6_CMP_REG_F (0x05UL)
  233. /**
  234. * @}
  235. */
  236. /**
  237. * @defgroup TMR6_Count_Ch_Define TMR6 General/Special Compare Channel Define
  238. * @{
  239. */
  240. #define TMR6_CH_A (0x00UL)
  241. #define TMR6_CH_B (0x01UL)
  242. /**
  243. * @}
  244. */
  245. /**
  246. * @defgroup TMR6_Buf_Num_Define TMR6 Buffer Number Define
  247. * @{
  248. */
  249. #define TMR6_BUF_SINGLE (0x00UL)
  250. #define TMR6_BUF_DUAL (TMR6_BCONR_BSEA)
  251. /**
  252. * @}
  253. */
  254. /**
  255. * @defgroup TMR6_Buf_Trans_Cond_Define TMR6 Buffer Transfer Time Configuration Define
  256. * @{
  257. */
  258. #define TMR6_BUF_TRANS_INVD (0x00UL)
  259. #define TMR6_BUF_TRANS_OVF (0x00000004UL)
  260. #define TMR6_BUF_TRANS_UDF (0x00000008UL)
  261. #define TMR6_BUF_TRANS_OVF_UDF (0x0000000CUL)
  262. /**
  263. * @}
  264. */
  265. /**
  266. * @defgroup TMR6_Valid_Period_Count_Cond_Define TMR6 Valid Period Function Count Condition Define
  267. * @{
  268. */
  269. #define TMR6_VALID_PERIOD_INVD (0x00UL) /*!< Valid period function off */
  270. #define TMR6_VALID_PERIOD_CNT_COND_VALLEY (TMR6_VPERR_PCNTE_0) /*!< Count when Sawtooth waveform overflow and underflow, \
  271. triangular wave valley */
  272. #define TMR6_VALID_PERIOD_CNT_COND_PEAK (TMR6_VPERR_PCNTE_1) /*!< Count when Sawtooth waveform overflow and underflow, \
  273. triangular wave peak */
  274. #define TMR6_VALID_PERIOD_CNT_COND_VALLEY_PEAK (TMR6_VPERR_PCNTE) /*!< Count when Sawtooth waveform overflow and underflow, \
  275. triangular wave valley and peak */
  276. /**
  277. * @}
  278. */
  279. /**
  280. * @defgroup TMR6_Valid_Period_Count_Define TMR6 Valid Period Function Count Define
  281. * @{
  282. */
  283. #define TMR6_VALID_PERIOD_CNT_INVD (0x00UL)
  284. #define TMR6_VALID_PERIOD_CNT1 (1UL << TMR6_VPERR_PCNTS_POS)
  285. #define TMR6_VALID_PERIOD_CNT2 (2UL << TMR6_VPERR_PCNTS_POS)
  286. #define TMR6_VALID_PERIOD_CNT3 (3UL << TMR6_VPERR_PCNTS_POS)
  287. #define TMR6_VALID_PERIOD_CNT4 (4UL << TMR6_VPERR_PCNTS_POS)
  288. #define TMR6_VALID_PERIOD_CNT5 (5UL << TMR6_VPERR_PCNTS_POS)
  289. #define TMR6_VALID_PERIOD_CNT6 (6UL << TMR6_VPERR_PCNTS_POS)
  290. #define TMR6_VALID_PERIOD_CNT7 (7UL << TMR6_VPERR_PCNTS_POS)
  291. /**
  292. * @}
  293. */
  294. /**
  295. * @defgroup TMR6_DeadTime_Reg_Define TMR6 Dead Time Register Define
  296. * @{
  297. */
  298. #define TMR6_DEADTIME_REG_UP_A (0x00U) /*!< Register DTUAR */
  299. #define TMR6_DEADTIME_REG_DOWN_A (0x01U) /*!< Register DTDAR */
  300. #define TMR6_DEADTIME_REG_UP_B (0x02U) /*!< Register DTUBR */
  301. #define TMR6_DEADTIME_REG_DOWN_B (0x03U) /*!< Register DTDBR */
  302. /**
  303. * @}
  304. */
  305. /**
  306. * @defgroup TMR6_Pin_Define TMR6 Input And Output Pin Define
  307. * @{
  308. */
  309. #define TMR6_IO_PWMA (0x00U) /*!< Pin TIM6_<t>_PWMA */
  310. #define TMR6_IO_PWMB (0x01U) /*!< Pin TIM6_<t>_PWMB */
  311. #define TMR6_INPUT_TRIGA (0x02U) /*!< Input pin TIM6_TRIGA */
  312. #define TMR6_INPUT_TRIGB (0x03U) /*!< Input pin TIM6_TRIGB */
  313. /**
  314. * @}
  315. */
  316. /**
  317. * @defgroup TMR6_Input_Filter_Clock TMR6 Input Pin Filter Clock Divider Define
  318. * @{
  319. */
  320. #define TMR6_FILTER_CLK_DIV1 (0x00U)
  321. #define TMR6_FILTER_CLK_DIV4 (0x01U)
  322. #define TMR6_FILTER_CLK_DIV16 (0x02U)
  323. #define TMR6_FILTER_CLK_DIV64 (0x03U)
  324. /**
  325. * @}
  326. */
  327. /**
  328. * @defgroup TMR6_Pin_Mode_Define TMR6 Pin Function Mode Selection
  329. * @{
  330. */
  331. #define TMR6_PIN_CMP_OUTPUT (0x00UL)
  332. #define TMR6_PIN_CAPT_INPUT (TMR6_PCNAR_CAPMDA)
  333. /**
  334. * @}
  335. */
  336. /**
  337. * @defgroup TMR6_Count_State_Define TMR6 Count State
  338. * @{
  339. */
  340. #define TMR6_STAT_START (0U) /*!< Count start */
  341. #define TMR6_STAT_STOP (1U) /*!< Count stop */
  342. #define TMR6_STAT_OVF (2U) /*!< Count overflow */
  343. #define TMR6_STAT_UDF (3U) /*!< Count underflow */
  344. #define TMR6_STAT_UP_CNT_MATCH_A (4U) /*!< Count up match compare register A */
  345. #define TMR6_STAT_DOWN_CNT_MATCH_A (5U) /*!< Count down match compare register A */
  346. #define TMR6_STAT_UP_CNT_MATCH_B (6U) /*!< Count up match compare register B */
  347. #define TMR6_STAT_DOWN_CNT_MATCH_B (7U) /*!< Count down match compare register B */
  348. /**
  349. * @}
  350. */
  351. /**
  352. * @defgroup TMR6_Pin_Polarity_Define TMR6 Pin Output Polarity
  353. * @{
  354. */
  355. #define TMR6_PWM_LOW (0x00U)
  356. #define TMR6_PWM_HIGH (0x01U)
  357. #define TMR6_PWM_HOLD (0x02U)
  358. #define TMR6_PWM_INVT (0x03U)
  359. /**
  360. * @}
  361. */
  362. /**
  363. * @defgroup TMR6_Force_Output_Polarity_Define TMR6 Force Output Polarity Next Period
  364. * @{
  365. */
  366. #define TMR6_PWM_FORCE_INVD (0x00U)
  367. #define TMR6_PWM_FORCE_LOW (0x02U)
  368. #define TMR6_PWM_FORCE_HIGH (0x03U)
  369. /**
  370. * @}
  371. */
  372. /**
  373. * @defgroup TMR6_Emb_Ch_Define TMR6 EMB Event Channel
  374. * @{
  375. */
  376. #define TMR6_EMB_EVT_CH0 (0x00U)
  377. /**
  378. * @}
  379. */
  380. /**
  381. * @defgroup TMR6_Emb_Release_Mode_Define TMR6 EMB Function Release Mode When EMB Event Invalid
  382. * @{
  383. */
  384. #define TMR6_EMB_RELEASE_IMMED (0x00UL)
  385. #define TMR6_EMB_RELEASE_OVF (TMR6_PCNAR_EMBRA_0)
  386. #define TMR6_EMB_RELEASE_UDF (TMR6_PCNAR_EMBRA_1)
  387. #define TMR6_EMB_RELEASE_OVF_UDF (TMR6_PCNAR_EMBRA)
  388. /**
  389. * @}
  390. */
  391. /**
  392. * @defgroup TMR6_Emb_Pin_Status_Define TMR6 Pin Output Status When EMB Event Valid
  393. * @{
  394. */
  395. #define TMR6_EMB_PIN_NORMAL (0x00UL)
  396. #define TMR6_EMB_PIN_HIZ (TMR6_PCNAR_EMBCA_0)
  397. #define TMR6_EMB_PIN_LOW (TMR6_PCNAR_EMBCA_1)
  398. #define TMR6_EMB_PIN_HIGH (TMR6_PCNAR_EMBCA)
  399. /**
  400. * @}
  401. */
  402. /**
  403. * @defgroup TMR6_Deadtime_CountUp_Buf_Func_Define TMR6 Dead Time Buffer Function For Count Up Stage
  404. * @{
  405. */
  406. #define TMR6_DEADTIME_CNT_UP_BUF_OFF (0x00UL)
  407. #define TMR6_DEADTIME_CNT_UP_BUF_ON (TMR6_DCONR_DTBENU)
  408. /**
  409. * @}
  410. */
  411. /**
  412. * @defgroup TMR6_Deadtime_CountDown_Buf_Func_Define TMR6 Dead Time Buffer Function For Count Down Stage
  413. * @{
  414. */
  415. #define TMR6_DEADTIME_CNT_DOWN_BUF_OFF (0x00UL)
  416. #define TMR6_DEADTIME_CNT_DOWN_BUF_ON (TMR6_DCONR_DTBEND)
  417. /**
  418. * @}
  419. */
  420. /**
  421. * @defgroup TMR6_Deadtime_Buf_Trans_Cond_Define TMR6 Dead Time Buffer Transfer Condition Define For Triangular Count Mode
  422. * @{
  423. */
  424. #define TMR6_DEADTIME_BUF_COND_INVD (0x00U)
  425. #define TMR6_DEADTIME_BUF_COND_OVF (TMR6_DCONR_DTBTRU)
  426. #define TMR6_DEADTIME_BUF_COND_UDF (TMR6_DCONR_DTBTRD)
  427. #define TMR6_DEADTIME_BUF_COND_OVF_UDF (TMR6_DCONR_DTBTRU | TMR6_DCONR_DTBTRD)
  428. /**
  429. * @}
  430. */
  431. /**
  432. * @defgroup TMR6_Deadtime_Reg_Equal_Func_Define TMR6 Dead Time Function DTDAR Equal DTUAR
  433. * @{
  434. */
  435. #define TMR6_DEADTIME_EQUAL_OFF (0x00UL)
  436. #define TMR6_DEADTIME_EQUAL_ON (TMR6_DCONR_SEPA)
  437. /**
  438. * @}
  439. */
  440. /**
  441. * @defgroup TMR6_SW_Sync_Unit_define TMR6 Software Synchronization Start/Stop/Clear/Update Unit Number Define
  442. * @{
  443. */
  444. #define TMR6_SW_SYNC_U1 (TMR6CR_SSTAR_SSTA1)
  445. #define TMR6_SW_SYNC_U2 (TMR6CR_SSTAR_SSTA2)
  446. #define TMR6_SW_SYNC_ALL (0x03UL)
  447. /**
  448. * @}
  449. */
  450. /**
  451. * @defgroup TMR6_hardware_start_condition_Define TMR6 Hardware Start Condition Define
  452. * @{
  453. */
  454. #define TMR6_START_COND_PWMA_RISING (TMR6_HSTAR_HSTA0)
  455. #define TMR6_START_COND_PWMA_FALLING (TMR6_HSTAR_HSTA1)
  456. #define TMR6_START_COND_PWMB_RISING (TMR6_HSTAR_HSTA2)
  457. #define TMR6_START_COND_PWMB_FALLING (TMR6_HSTAR_HSTA3)
  458. #define TMR6_START_COND_EVT0 (TMR6_HSTAR_HSTA8)
  459. #define TMR6_START_COND_EVT1 (TMR6_HSTAR_HSTA9)
  460. #define TMR6_START_COND_TRIGEA_RISING (TMR6_HSTAR_HSTA16)
  461. #define TMR6_START_COND_TRIGEA_FALLING (TMR6_HSTAR_HSTA17)
  462. #define TMR6_START_COND_TRIGEB_RISING (TMR6_HSTAR_HSTA18)
  463. #define TMR6_START_COND_TRIGEB_FALLING (TMR6_HSTAR_HSTA19)
  464. #define TMR6_START_COND_ALL (0x000F030FUL)
  465. /**
  466. * @}
  467. */
  468. /**
  469. * @defgroup TMR6_hardware_stop_condition_Define TMR6 Hardware Stop Condition Define
  470. * @{
  471. */
  472. #define TMR6_STOP_COND_PWMA_RISING (TMR6_HSTPR_HSTP0)
  473. #define TMR6_STOP_COND_PWMA_FALLING (TMR6_HSTPR_HSTP1)
  474. #define TMR6_STOP_COND_PWMB_RISING (TMR6_HSTPR_HSTP2)
  475. #define TMR6_STOP_COND_PWMB_FALLING (TMR6_HSTPR_HSTP3)
  476. #define TMR6_STOP_COND_EVT0 (TMR6_HSTPR_HSTP8)
  477. #define TMR6_STOP_COND_EVT1 (TMR6_HSTPR_HSTP9)
  478. #define TMR6_STOP_COND_TRIGEA_RISING (TMR6_HSTPR_HSTP16)
  479. #define TMR6_STOP_COND_TRIGEA_FALLING (TMR6_HSTPR_HSTP17)
  480. #define TMR6_STOP_COND_TRIGEB_RISING (TMR6_HSTPR_HSTP18)
  481. #define TMR6_STOP_COND_TRIGEB_FALLING (TMR6_HSTPR_HSTP19)
  482. #define TMR6_STOP_COND_ALL (0x000F030FUL)
  483. /**
  484. * @}
  485. */
  486. /**
  487. * @defgroup TMR6_hardware_clear_condition_Define TMR6 Hardware Clear Condition Define
  488. * @{
  489. */
  490. #define TMR6_CLR_COND_PWMA_RISING (TMR6_HCLRR_HCLE0)
  491. #define TMR6_CLR_COND_PWMA_FALLING (TMR6_HCLRR_HCLE1)
  492. #define TMR6_CLR_COND_PWMB_RISING (TMR6_HCLRR_HCLE2)
  493. #define TMR6_CLR_COND_PWMB_FALLING (TMR6_HCLRR_HCLE3)
  494. #define TMR6_CLR_COND_EVT0 (TMR6_HCLRR_HCLE8)
  495. #define TMR6_CLR_COND_EVT1 (TMR6_HCLRR_HCLE9)
  496. #define TMR6_CLR_COND_TRIGEA_RISING (TMR6_HCLRR_HCLE16)
  497. #define TMR6_CLR_COND_TRIGEA_FALLING (TMR6_HCLRR_HCLE17)
  498. #define TMR6_CLR_COND_TRIGEB_RISING (TMR6_HCLRR_HCLE18)
  499. #define TMR6_CLR_COND_TRIGEB_FALLING (TMR6_HCLRR_HCLE19)
  500. #define TMR6_CLR_COND_ALL (0x000F030FUL)
  501. /**
  502. * @}
  503. */
  504. /**
  505. * @defgroup TMR6_hardware_update_condition_Define TMR6 Hardware Update Condition Define
  506. * @{
  507. */
  508. #define TMR6_UPD_COND_PWMA_RISING (TMR6_HUPDR_HUPD0)
  509. #define TMR6_UPD_COND_PWMA_FALLING (TMR6_HUPDR_HUPD1)
  510. #define TMR6_UPD_COND_PWMB_RISING (TMR6_HUPDR_HUPD2)
  511. #define TMR6_UPD_COND_PWMB_FALLING (TMR6_HUPDR_HUPD3)
  512. #define TMR6_UPD_COND_EVT0 (TMR6_HUPDR_HUPD8)
  513. #define TMR6_UPD_COND_EVT1 (TMR6_HUPDR_HUPD9)
  514. #define TMR6_UPD_COND_TRIGEA_RISING (TMR6_HUPDR_HUPD16)
  515. #define TMR6_UPD_COND_TRIGEA_FALLING (TMR6_HUPDR_HUPD17)
  516. #define TMR6_UPD_COND_TRIGEB_RISING (TMR6_HUPDR_HUPD18)
  517. #define TMR6_UPD_COND_TRIGEB_FALLING (TMR6_HUPDR_HUPD19)
  518. #define TMR6_UPD_COND_ALL (0x000F030FUL)
  519. /**
  520. * @}
  521. */
  522. /**
  523. * @defgroup TMR6_hardware_capture_condition_Define TMR6 Hardware Capture Condition Define
  524. * @{
  525. */
  526. #define TMR6_CAPT_COND_PWMA_RISING (TMR6_HCPAR_HCPA0)
  527. #define TMR6_CAPT_COND_PWMA_FALLING (TMR6_HCPAR_HCPA1)
  528. #define TMR6_CAPT_COND_PWMB_RISING (TMR6_HCPAR_HCPA2)
  529. #define TMR6_CAPT_COND_PWMB_FALLING (TMR6_HCPAR_HCPA3)
  530. #define TMR6_CAPT_COND_EVT0 (TMR6_HCPAR_HCPA8)
  531. #define TMR6_CAPT_COND_EVT1 (TMR6_HCPAR_HCPA9)
  532. #define TMR6_CAPT_COND_TRIGEA_RISING (TMR6_HCPAR_HCPA16)
  533. #define TMR6_CAPT_COND_TRIGEA_FALLING (TMR6_HCPAR_HCPA17)
  534. #define TMR6_CAPT_COND_TRIGEB_RISING (TMR6_HCPAR_HCPA18)
  535. #define TMR6_CAPT_COND_TRIGEB_FALLING (TMR6_HCPAR_HCPA19)
  536. #define TMR6_CAPT_COND_XOR_RISING (TMR6_HCPAR_HCPA24)
  537. #define TMR6_CAPT_COND_XOR_FALLING (TMR6_HCPAR_HCPA25)
  538. #define TMR6_CAPT_COND_ALL (0x030F030FUL)
  539. /**
  540. * @}
  541. */
  542. /**
  543. * @defgroup TMR6_HW_Count_Up_Cond_Define TMR6 Hardware Count Up Condition Define
  544. * @{
  545. */
  546. #define TMR6_CNT_UP_COND_PWMA_LOW_PWMB_RISING (TMR6_HCUPR_HCUP0)
  547. #define TMR6_CNT_UP_COND_PWMA_LOW_PWMB_FALLING (TMR6_HCUPR_HCUP1)
  548. #define TMR6_CNT_UP_COND_PWMA_HIGH_PWMB_RISING (TMR6_HCUPR_HCUP2)
  549. #define TMR6_CNT_UP_COND_PWMA_HIGH_PWMB_FALLING (TMR6_HCUPR_HCUP3)
  550. #define TMR6_CNT_UP_COND_PWMB_LOW_PWMA_RISING (TMR6_HCUPR_HCUP4)
  551. #define TMR6_CNT_UP_COND_PWMB_LOW_PWMA_FALLING (TMR6_HCUPR_HCUP5)
  552. #define TMR6_CNT_UP_COND_PWMB_HIGH_PWMA_RISING (TMR6_HCUPR_HCUP6)
  553. #define TMR6_CNT_UP_COND_PWMB_HIGH_PWMA_FALLING (TMR6_HCUPR_HCUP7)
  554. #define TMR6_CNT_UP_COND_EVT0 (TMR6_HCUPR_HCUP8)
  555. #define TMR6_CNT_UP_COND_EVT1 (TMR6_HCUPR_HCUP9)
  556. #define TMR6_CNT_UP_COND_TRIGEA_RISING (TMR6_HCUPR_HCUP16)
  557. #define TMR6_CNT_UP_COND_TRIGEA_FALLING (TMR6_HCUPR_HCUP17)
  558. #define TMR6_CNT_UP_COND_TRIGEB_RISING (TMR6_HCUPR_HCUP18)
  559. #define TMR6_CNT_UP_COND_TRIGEB_FALLING (TMR6_HCUPR_HCUP19)
  560. #define TMR6_CNT_UP_COND_ALL (0x000F03FFUL)
  561. /**
  562. * @}
  563. */
  564. /**
  565. * @defgroup TMR6_HW_Count_Down_Cond_Define TMR6 Hardware Count Down Condition Define
  566. * @{
  567. */
  568. #define TMR6_CNT_DOWN_COND_PWMA_LOW_PWMB_RISING (TMR6_HCDOR_HCDO0)
  569. #define TMR6_CNT_DOWN_COND_PWMA_LOW_PWMB_FALLING (TMR6_HCDOR_HCDO1)
  570. #define TMR6_CNT_DOWN_COND_PWMA_HIGH_PWMB_RISING (TMR6_HCDOR_HCDO2)
  571. #define TMR6_CNT_DOWN_COND_PWMA_HIGH_PWMB_FALLING (TMR6_HCDOR_HCDO3)
  572. #define TMR6_CNT_DOWN_COND_PWMB_LOW_PWMA_RISING (TMR6_HCDOR_HCDO4)
  573. #define TMR6_CNT_DOWN_COND_PWMB_LOW_PWMA_FALLING (TMR6_HCDOR_HCDO5)
  574. #define TMR6_CNT_DOWN_COND_PWMB_HIGH_PWMA_RISING (TMR6_HCDOR_HCDO6)
  575. #define TMR6_CNT_DOWN_COND_PWMB_HIGH_PWMA_FALLING (TMR6_HCDOR_HCDO7)
  576. #define TMR6_CNT_DOWN_COND_EVT0 (TMR6_HCDOR_HCDO8)
  577. #define TMR6_CNT_DOWN_COND_EVT1 (TMR6_HCDOR_HCDO9)
  578. #define TMR6_CNT_DOWN_COND_TRIGEA_RISING (TMR6_HCDOR_HCDO16)
  579. #define TMR6_CNT_DOWN_COND_TRIGEA_FALLING (TMR6_HCDOR_HCDO17)
  580. #define TMR6_CNT_DOWN_COND_TRIGEB_RISING (TMR6_HCDOR_HCDO18)
  581. #define TMR6_CNT_DOWN_COND_TRIGEB_FALLING (TMR6_HCDOR_HCDO19)
  582. #define TMR6_CNT_DOWN_COND_ALL (0x000F03FFUL)
  583. /**
  584. * @}
  585. */
  586. /**
  587. * @defgroup TMR6_Count_Dir_Define TMR6 Base Counter Function Direction Define
  588. * @{
  589. */
  590. #define TMR6_CNT_UP (TMR6_GCONR_DIR)
  591. #define TMR6_CNT_DOWN (0x00UL)
  592. /**
  593. * @}
  594. */
  595. /**
  596. * @defgroup TMR6_Count_Mode_Define TMR6 Base Counter Function Mode Define
  597. * @{
  598. */
  599. #define TMR6_MD_SAWTOOTH (0x00UL)
  600. #define TMR6_MD_TRIANGLE (TMR6_GCONR_MODE)
  601. /**
  602. * @}
  603. */
  604. /**
  605. * @defgroup TMR6_Count_Clock_Define TMR6 Base Counter Clock Source Define
  606. * @{
  607. */
  608. #define TMR6_CLK_DIV1 (0x00UL)
  609. #define TMR6_CLK_DIV2 (0x01UL << TMR6_GCONR_CKDIV_POS)
  610. #define TMR6_CLK_DIV4 (0x02UL << TMR6_GCONR_CKDIV_POS)
  611. #define TMR6_CLK_DIV8 (0x03UL << TMR6_GCONR_CKDIV_POS)
  612. #define TMR6_CLK_DIV16 (0x04UL << TMR6_GCONR_CKDIV_POS)
  613. #define TMR6_CLK_DIV32 (0x05UL << TMR6_GCONR_CKDIV_POS)
  614. #define TMR6_CLK_DIV64 (0x06UL << TMR6_GCONR_CKDIV_POS)
  615. #define TMR6_CLK_DIV128 (0x07UL << TMR6_GCONR_CKDIV_POS)
  616. #define TMR6_CLK_DIV256 (0x08UL << TMR6_GCONR_CKDIV_POS)
  617. #define TMR6_CLK_DIV512 (0x09UL << TMR6_GCONR_CKDIV_POS)
  618. #define TMR6_CLK_DIV1024 (0x0AUL << TMR6_GCONR_CKDIV_POS)
  619. /**
  620. * @}
  621. */
  622. /**
  623. * @defgroup TMR6_Count_Reload_Define TMR6 Count Stop After Overflow Function Define
  624. * @{
  625. */
  626. #define TMR6_CNT_RELOAD_ON (0x00UL)
  627. #define TMR6_CNT_RELOAD_OFF (TMR6_GCONR_OVSTP)
  628. /**
  629. * @}
  630. */
  631. /**
  632. * @defgroup TMR6_Zmask_Cycle_Define TMR6 Z Mask Input Function Mask Cycles Number Define
  633. * @{
  634. */
  635. #define TMR6_ZMASK_FUNC_INVD (0x00UL)
  636. #define TMR6_ZMASK_CYCLE_4 (TMR6_GCONR_ZMSKVAL_0)
  637. #define TMR6_ZMASK_CYCLE_8 (TMR6_GCONR_ZMSKVAL_1)
  638. #define TMR6_ZMASK_CYCLE_16 (TMR6_GCONR_ZMSKVAL)
  639. /**
  640. * @}
  641. */
  642. /**
  643. * @defgroup TMR6_Zmask_Pos_Unit_Clear_Func_Define TMR6 Unit As Position Timer, Z Phase Input Mask Function Define For Clear Action
  644. * @{
  645. */
  646. #define TMR6_POS_CLR_ZMASK_FUNC_OFF (0x00UL)
  647. #define TMR6_POS_CLR_ZMASK_FUNC_ON (TMR6_GCONR_ZMSKPOS)
  648. /**
  649. * @}
  650. */
  651. /**
  652. * @defgroup TMR6_Zmask_Revo_Unit_Count_Func_Define TMR6 Unit As Revolution Timer, Z Phase Input Mask Function Define For Count Action
  653. * @{
  654. */
  655. #define TMR6_REVO_CNT_ZMASK_FUNC_OFF (0x00UL)
  656. #define TMR6_REVO_CNT_ZMASK_FUNC_ON (TMR6_GCONR_ZMSKREV)
  657. /**
  658. * @}
  659. */
  660. /**
  661. * @}
  662. */
  663. /*******************************************************************************
  664. * Global variable definitions ('extern')
  665. ******************************************************************************/
  666. /*******************************************************************************
  667. Global function prototypes (definition in C source)
  668. ******************************************************************************/
  669. /**
  670. * @addtogroup TMR6_Global_Functions
  671. * @{
  672. */
  673. /**
  674. * @brief Get Software Sync start status
  675. * @param None
  676. * @retval uint32_t Data indicate the read status.
  677. */
  678. __STATIC_INLINE uint32_t TMR6_GetSWSyncStartStatus(void)
  679. {
  680. return READ_REG32(CM_TMR6CR->SSTAR);
  681. }
  682. /* Base count */
  683. int32_t TMR6_StructInit(stc_tmr6_init_t *pstcTmr6Init);
  684. int32_t TMR6_Init(CM_TMR6_TypeDef *TMR6x, const stc_tmr6_init_t *pstcTmr6Init);
  685. void TMR6_SetCountMode(CM_TMR6_TypeDef *TMR6x, uint32_t u32Mode);
  686. void TMR6_SetCountDir(CM_TMR6_TypeDef *TMR6x, uint32_t u32Dir);
  687. uint32_t TMR6_GetCountDir(CM_TMR6_TypeDef *TMR6x);
  688. void TMR6_SetClockDiv(CM_TMR6_TypeDef *TMR6x, uint32_t u32Div);
  689. void TMR6_CountReloadCmd(CM_TMR6_TypeDef *TMR6x, en_functional_state_t enNewState);
  690. /* Hardware count */
  691. void TMR6_HWCountUpCondCmd(CM_TMR6_TypeDef *TMR6x, uint32_t u32Cond, en_functional_state_t enNewState);
  692. void TMR6_HWCountDownCondCmd(CM_TMR6_TypeDef *TMR6x, uint32_t u32Cond, en_functional_state_t enNewState);
  693. /* PWM output */
  694. int32_t TMR6_PWM_StructInit(stc_tmr6_pwm_init_t *pstcPwmInit);
  695. int32_t TMR6_PWM_Init(CM_TMR6_TypeDef *TMR6x, uint32_t u32Ch, const stc_tmr6_pwm_init_t *pstcPwmInit);
  696. void TMR6_PWM_OutputCmd(CM_TMR6_TypeDef *TMR6x, uint32_t u32Ch, en_functional_state_t enNewState);
  697. void TMR6_PWM_SetPolarity(CM_TMR6_TypeDef *TMR6x, uint32_t u32Ch, uint32_t u32CountState, uint32_t u32Polarity);
  698. void TMR6_PWM_SetForcePolarity(CM_TMR6_TypeDef *TMR6x, uint32_t u32Ch, uint32_t u32Polarity);
  699. /* Input capture */
  700. void TMR6_HWCaptureCondCmd(CM_TMR6_TypeDef *TMR6x, uint32_t u32Ch, uint32_t u32Cond, en_functional_state_t enNewState);
  701. /* Pin config */
  702. void TMR6_SetFilterClockDiv(CM_TMR6_TypeDef *TMR6x, uint32_t u32Pin, uint32_t u32Div);
  703. void TMR6_FilterCmd(CM_TMR6_TypeDef *TMR6x, uint32_t u32Pin, en_functional_state_t enNewState);
  704. void TMR6_SetFunc(CM_TMR6_TypeDef *TMR6x, uint32_t u32Ch, uint32_t u32Func);
  705. /* Universal */
  706. void TMR6_IntCmd(CM_TMR6_TypeDef *TMR6x, uint32_t u32IntType, en_functional_state_t enNewState);
  707. en_flag_status_t TMR6_GetStatus(const CM_TMR6_TypeDef *TMR6x, uint32_t u32Flag);
  708. void TMR6_ClearStatus(CM_TMR6_TypeDef *TMR6x, uint32_t u32Flag);
  709. uint32_t TMR6_GetPeriodNum(const CM_TMR6_TypeDef *TMR6x);
  710. void TMR6_DeInit(CM_TMR6_TypeDef *TMR6x);
  711. void TMR6_Start(CM_TMR6_TypeDef *TMR6x);
  712. void TMR6_Stop(CM_TMR6_TypeDef *TMR6x);
  713. /* Register write */
  714. void TMR6_SetCountValue(CM_TMR6_TypeDef *TMR6x, uint32_t u32Value);
  715. void TMR6_SetUpdateValue(CM_TMR6_TypeDef *TMR6x, uint32_t u32Value);
  716. void TMR6_SetPeriodValue(CM_TMR6_TypeDef *TMR6x, uint32_t u32Index, uint32_t u32Value);
  717. void TMR6_SetCompareValue(CM_TMR6_TypeDef *TMR6x, uint32_t u32Index, uint32_t u32Value);
  718. void TMR6_SetSpecialCompareValue(CM_TMR6_TypeDef *TMR6x, uint32_t u32Index, uint32_t u32Value);
  719. void TMR6_SetDeadTimeValue(CM_TMR6_TypeDef *TMR6x, uint32_t u32Index, uint32_t u32Value);
  720. /* Register read */
  721. uint32_t TMR6_GetCountValue(const CM_TMR6_TypeDef *TMR6x);
  722. uint32_t TMR6_GetUpdateValue(const CM_TMR6_TypeDef *TMR6x);
  723. uint32_t TMR6_GetPeriodValue(const CM_TMR6_TypeDef *TMR6x, uint32_t u32Index);
  724. uint32_t TMR6_GetCompareValue(const CM_TMR6_TypeDef *TMR6x, uint32_t u32Index);
  725. uint32_t TMR6_GetSpecialCompareValue(const CM_TMR6_TypeDef *TMR6x, uint32_t u32Index);
  726. uint32_t TMR6_GetDeadTimeValue(const CM_TMR6_TypeDef *TMR6x, uint32_t u32Index);
  727. /* Buffer function */
  728. int32_t TMR6_GeneralBufConfig(CM_TMR6_TypeDef *TMR6x, uint32_t u32Ch, const stc_tmr6_buf_config_t *pstcBufConfig);
  729. int32_t TMR6_PeriodBufConfig(CM_TMR6_TypeDef *TMR6x, const stc_tmr6_buf_config_t *pstcBufConfig);
  730. int32_t TMR6_SpecialBufConfig(CM_TMR6_TypeDef *TMR6x, uint32_t u32Ch, const stc_tmr6_buf_config_t *pstcBufConfig);
  731. void TMR6_GeneralBufCmd(CM_TMR6_TypeDef *TMR6x, uint32_t u32Ch, en_functional_state_t enNewState);
  732. void TMR6_SpecialBufCmd(CM_TMR6_TypeDef *TMR6x, uint32_t u32Ch, en_functional_state_t enNewState);
  733. void TMR6_PeriodBufCmd(CM_TMR6_TypeDef *TMR6x, en_functional_state_t enNewState);
  734. /* Extend function */
  735. int32_t TMR6_ValidPeriodConfig(CM_TMR6_TypeDef *TMR6x, const stc_tmr6_valid_period_config_t *pstcValidperiodConfig);
  736. void TMR6_ValidPeriodCmd(CM_TMR6_TypeDef *TMR6x, uint32_t u32Ch, en_functional_state_t enNewState);
  737. void TMR6_DeadTimeFuncCmd(CM_TMR6_TypeDef *TMR6x, en_functional_state_t enNewState);
  738. int32_t TMR6_DeadTimeConfig(CM_TMR6_TypeDef *TMR6x, const stc_tmr6_deadtime_config_t *pstcDeadTimeConfig);
  739. int32_t TMR6_ZMaskConfig(CM_TMR6_TypeDef *TMR6x, const stc_tmr6_zmask_config_t *pstcZMaskConfig);
  740. int32_t TMR6_EMBConfig(CM_TMR6_TypeDef *TMR6x, uint32_t u32Ch, const stc_tmr6_emb_config_t *pstcEmbConfig);
  741. int32_t TMR6_BufFuncStructInit(stc_tmr6_buf_config_t *pstcBufConfig);
  742. int32_t TMR6_ValidPeriodStructInit(stc_tmr6_valid_period_config_t *pstcValidperiodConfig);
  743. int32_t TMR6_EMBConfigStructInit(stc_tmr6_emb_config_t *pstcEmbConfig);
  744. int32_t TMR6_DeadTimeStructInit(stc_tmr6_deadtime_config_t *pstcDeadTimeConfig);
  745. int32_t TMR6_ZMaskConfigStructInit(stc_tmr6_zmask_config_t *pstcZMaskConfig);
  746. /* Software synchronous control */
  747. void TMR6_SWSyncStart(uint32_t u32Unit);
  748. void TMR6_SWSyncStop(uint32_t u32Unit);
  749. void TMR6_SWSyncClear(uint32_t u32Unit);
  750. void TMR6_SWSyncUpdate(uint32_t u32Unit);
  751. /* Hardware control */
  752. void TMR6_HWStartCondCmd(CM_TMR6_TypeDef *TMR6x, uint32_t u32Cond, en_functional_state_t enNewState);
  753. void TMR6_HWStartCmd(CM_TMR6_TypeDef *TMR6x, en_functional_state_t enNewState);
  754. void TMR6_HWStopCondCmd(CM_TMR6_TypeDef *TMR6x, uint32_t u32Cond, en_functional_state_t enNewState);
  755. void TMR6_HWStopCmd(CM_TMR6_TypeDef *TMR6x, en_functional_state_t enNewState);
  756. void TMR6_HWClearCondCmd(CM_TMR6_TypeDef *TMR6x, uint32_t u32Cond, en_functional_state_t enNewState);
  757. void TMR6_HWClearCmd(CM_TMR6_TypeDef *TMR6x, en_functional_state_t enNewState);
  758. void TMR6_HWUpdateCondCmd(CM_TMR6_TypeDef *TMR6x, uint32_t u32Cond, en_functional_state_t enNewState);
  759. void TMR6_HWUpdateCmd(CM_TMR6_TypeDef *TMR6x, en_functional_state_t enNewState);
  760. /**
  761. * @}
  762. */
  763. #endif /* LL_TMR6_ENABLE */
  764. /**
  765. * @}
  766. */
  767. /**
  768. * @}
  769. */
  770. #ifdef __cplusplus
  771. }
  772. #endif
  773. #endif /* __HC32_LL_TMR6_H__ */
  774. /*******************************************************************************
  775. * EOF (not truncated)
  776. ******************************************************************************/