reg_tim.h 50 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681
  1. ////////////////////////////////////////////////////////////////////////////////
  2. /// @file reg_tim.h
  3. /// @author AE TEAM
  4. /// @brief THIS FILE CONTAINS ALL THE FUNCTIONS PROTOTYPES FOR THE SERIES OF
  5. /// MM32 FIRMWARE LIBRARY.
  6. ////////////////////////////////////////////////////////////////////////////////
  7. /// @attention
  8. ///
  9. /// THE EXISTING FIRMWARE IS ONLY FOR REFERENCE, WHICH IS DESIGNED TO PROVIDE
  10. /// CUSTOMERS WITH CODING INFORMATION ABOUT THEIR PRODUCTS SO THEY CAN SAVE
  11. /// TIME. THEREFORE, MINDMOTION SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT OR
  12. /// CONSEQUENTIAL DAMAGES ABOUT ANY CLAIMS ARISING OUT OF THE CONTENT OF SUCH
  13. /// HARDWARE AND/OR THE USE OF THE CODING INFORMATION CONTAINED HEREIN IN
  14. /// CONNECTION WITH PRODUCTS MADE BY CUSTOMERS.
  15. ///
  16. /// <H2><CENTER>&COPY; COPYRIGHT MINDMOTION </CENTER></H2>
  17. ////////////////////////////////////////////////////////////////////////////////
  18. // Define to prevent recursive inclusion
  19. #ifndef __REG_TIM_H
  20. #define __REG_TIM_H
  21. // Files includes
  22. #include <stdint.h>
  23. #include <stdbool.h>
  24. #include "types.h"
  25. #if defined ( __CC_ARM )
  26. #pragma anon_unions
  27. #endif
  28. ////////////////////////////////////////////////////////////////////////////////
  29. /// @brief TIM Base Address Definition
  30. ////////////////////////////////////////////////////////////////////////////////
  31. #define TIM1_BASE (APB2PERIPH_BASE + 0x2C00) ///< Base Address: 0x40012C00
  32. #define TIM2_BASE (APB1PERIPH_BASE + 0x0000) ///< Base Address: 0x40000000
  33. #define TIM3_BASE (APB1PERIPH_BASE + 0x0400) ///< Base Address: 0x40000400
  34. #define TIM4_BASE (APB1PERIPH_BASE + 0x0800) ///< Base Address: 0x40000800
  35. #define TIM5_BASE (APB1PERIPH_BASE + 0x0C00) ///< Base Address: 0x40000C00
  36. #define TIM6_BASE (APB1PERIPH_BASE + 0x1000) ///< Base Address: 0x40001000
  37. #define TIM7_BASE (APB1PERIPH_BASE + 0x1400) ///< Base Address: 0x40001400
  38. #define TIM8_BASE (APB2PERIPH_BASE + 0x3400) ///< Base Address: 0x40013400
  39. ////////////////////////////////////////////////////////////////////////////////
  40. /// @brief Timer Register Structure Definition
  41. ////////////////////////////////////////////////////////////////////////////////
  42. typedef struct {
  43. __IO u32 CR1; ///< TIM control register 1, offset: 0x00
  44. __IO u32 CR2; ///< TIM control register 2, offset: 0x04
  45. __IO u32 SMCR; ///< TIM slave Mode Control register, offset: 0x08
  46. __IO u32 DIER; ///< TIM DMA/interrupt enable register, offset: 0x0C
  47. __IO u32 SR; ///< TIM status register, offset: 0x10
  48. __IO u32 EGR; ///< TIM event generation register, offset: 0x14
  49. __IO u32 CCMR1; ///< TIM capture/compare mode register 1, offset: 0x18
  50. __IO u32 CCMR2; ///< TIM capture/compare mode register 2, offset: 0x1C
  51. __IO u32 CCER; ///< TIM capture/compare enable register, offset: 0x20
  52. __IO u32 CNT; ///< TIM counter register, offset: 0x24
  53. __IO u32 PSC; ///< TIM prescaler register, offset: 0x28
  54. __IO u32 ARR; ///< TIM auto-reload register, offset: 0x2C
  55. __IO u32 RCR; ///< TIM repetition counter register, offset: 0x30
  56. __IO u32 CCR1; ///< TIM capture/compare register 1, offset: 0x34
  57. __IO u32 CCR2; ///< TIM capture/compare register 2, offset: 0x38
  58. __IO u32 CCR3; ///< TIM capture/compare register 3, offset: 0x3C
  59. __IO u32 CCR4; ///< TIM capture/compare register 4, offset: 0x40
  60. __IO u32 BDTR; ///< TIM break and dead-time register, offset: 0x44
  61. __IO u32 DCR; ///< TIM DMA control register, offset: 0x48
  62. __IO u32 DMAR; ///< TIM DMA address for full transfer register, offset: 0x4C
  63. __IO u32 OR; ///< Option register, offset: 0x50
  64. __IO u32 CCMR3; ///< TIM capture/compare mode register 3, offset: 0x54
  65. __IO u32 CCR5; ///< TIM capture/compare register 5, offset: 0x58
  66. __IO u32 PDER; ///< PWM Shift repeat enable register, offset: 0x5C
  67. __IO u32 CCR1FALL; ///< PWM shift count CCR1 register, offset: 0x60
  68. __IO u32 CCR2FALL; ///< PWM shift count CCR2 register, offset: 0x64
  69. __IO u32 CCR3FALL; ///< PWM shift count CCR3 register, offset: 0x68
  70. __IO u32 CCR4FALL; ///< PWM shift count CCR4 register, offset: 0x6c
  71. __IO u32 CCR5FALL; ///< PWM shift count CCR5 register, offset: 0x70
  72. } TIM_TypeDef;
  73. ////////////////////////////////////////////////////////////////////////////////
  74. /// @brief TIM type pointer Definition
  75. ////////////////////////////////////////////////////////////////////////////////
  76. #define TIM1 ((TIM_TypeDef*) TIM1_BASE)
  77. #define TIM2 ((TIM_TypeDef*) TIM2_BASE)
  78. #define TIM3 ((TIM_TypeDef*) TIM3_BASE)
  79. #define TIM4 ((TIM_TypeDef*) TIM4_BASE)
  80. #define TIM5 ((TIM_TypeDef*) TIM5_BASE)
  81. #define TIM6 ((TIM_TypeDef*) TIM6_BASE)
  82. #define TIM7 ((TIM_TypeDef*) TIM7_BASE)
  83. #define TIM8 ((TIM_TypeDef*) TIM8_BASE)
  84. ////////////////////////////////////////////////////////////////////////////////
  85. /// @brief TIM_CR1 Register Bit Definition
  86. ////////////////////////////////////////////////////////////////////////////////
  87. #define TIM_CR1_CEN_Pos (0)
  88. #define TIM_CR1_CEN (0x01U << TIM_CR1_CEN_Pos) ///< Counter enable
  89. #define TIM_CR1_UDIS_Pos (1)
  90. #define TIM_CR1_UDIS (0x01U << TIM_CR1_UDIS_Pos) ///< Update disable
  91. #define TIM_CR1_URS_Pos (2)
  92. #define TIM_CR1_URS (0x01U << TIM_CR1_URS_Pos) ///< Update request source
  93. #define TIM_CR1_OPM_Pos (3)
  94. #define TIM_CR1_OPM (0x01U << TIM_CR1_OPM_Pos) ///< One pulse mode
  95. #define TIM_CR1_DIR_Pos (4)
  96. #define TIM_CR1_DIR (0x01U << TIM_CR1_DIR_Pos) ///< Direction
  97. #define TIM_CR1_CMS_Pos (5)
  98. #define TIM_CR1_CMS (0x03U << TIM_CR1_CMS_Pos) ///< CMS[1:0] bits (Center-aligned mode selection)
  99. #define TIM_CR1_CMS_EDGEALIGNED (0x00U << TIM_CR1_CMS_Pos) ///< Edge-aligned mode
  100. #define TIM_CR1_CMS_CENTERALIGNED1 (0x01U << TIM_CR1_CMS_Pos) ///< Center-aligned mode 1
  101. #define TIM_CR1_CMS_CENTERALIGNED2 (0x02U << TIM_CR1_CMS_Pos) ///< Center-aligned mode 2
  102. #define TIM_CR1_CMS_CENTERALIGNED3 (0x03U << TIM_CR1_CMS_Pos) ///< Center-aligned mode 3
  103. #define TIM_CR1_ARPEN_Pos (7)
  104. #define TIM_CR1_ARPEN (0x01U << TIM_CR1_ARPEN_Pos) ///< Auto-reload preload enable
  105. #define TIM_CR1_CKD_Pos (8)
  106. #define TIM_CR1_CKD (0x03U << TIM_CR1_CKD_Pos) ///< CKD[1:0] bits (clock division)
  107. #define TIM_CR1_CKD_DIV1 (0x00U << TIM_CR1_CKD_Pos) ///< Divided by 1
  108. #define TIM_CR1_CKD_DIV2 (0x01U << TIM_CR1_CKD_Pos) ///< Divided by 2
  109. #define TIM_CR1_CKD_DIV4 (0x02U << TIM_CR1_CKD_Pos) ///< Divided by 4
  110. ////////////////////////////////////////////////////////////////////////////////
  111. /// @brief TIM_CR2 Register Bit Definition
  112. ////////////////////////////////////////////////////////////////////////////////
  113. #define TIM_CR2_CCPC_Pos (0)
  114. #define TIM_CR2_CCPC (0x01U << TIM_CR2_CCPC_Pos) ///< Capture/Compare Preloaded Control
  115. #define TIM_CR2_CCUS_Pos (2)
  116. #define TIM_CR2_CCUS (0x01U << TIM_CR2_CCUS_Pos) ///< Capture/Compare Control Update Selection
  117. #define TIM_CR2_CCDS_Pos (3)
  118. #define TIM_CR2_CCDS (0x01U << TIM_CR2_CCDS_Pos) ///< Capture/Compare DMA Selection
  119. #define TIM_CR2_MMS_Pos (4)
  120. #define TIM_CR2_MMS (0x07U << TIM_CR2_MMS_Pos) ///< MMS[2:0] bits (Master Mode Selection)
  121. #define TIM_CR2_MMS_RESET (0x00U << TIM_CR2_MMS_Pos) ///< Master Mode Select: Reset
  122. #define TIM_CR2_MMS_ENABLE (0x01U << TIM_CR2_MMS_Pos) ///< Master Mode Select: Enable
  123. #define TIM_CR2_MMS_UPDATE (0x02U << TIM_CR2_MMS_Pos) ///< Master Mode Select: Update
  124. #define TIM_CR2_MMS_OC1 (0x03U << TIM_CR2_MMS_Pos) ///< Master Mode Select: OC1
  125. #define TIM_CR2_MMS_OC1REF (0x04U << TIM_CR2_MMS_Pos) ///< Master Mode Select: OC1Ref
  126. #define TIM_CR2_MMS_OC2REF (0x05U << TIM_CR2_MMS_Pos) ///< Master Mode Select: OC2Ref
  127. #define TIM_CR2_MMS_OC3REF (0x06U << TIM_CR2_MMS_Pos) ///< Master Mode Select: OC3Ref
  128. #define TIM_CR2_MMS_OC4REF (0x07U << TIM_CR2_MMS_Pos) ///< Master Mode Select: OC4Ref
  129. #define TIM_CR2_TI1S_Pos (7)
  130. #define TIM_CR2_TI1S (0x01U << TIM_CR2_TI1S_Pos) ///< TI1 Selection
  131. #define TIM_CR2_OIS1_Pos (8)
  132. #define TIM_CR2_OIS1 (0x01U << TIM_CR2_OIS1_Pos) ///< Output Idle state 1 (OC1 output)
  133. #define TIM_CR2_OIS1N_Pos (9)
  134. #define TIM_CR2_OIS1N (0x01U << TIM_CR2_OIS1N_Pos) ///< Output Idle state 1 (OC1N output)
  135. #define TIM_CR2_OIS2_Pos (10)
  136. #define TIM_CR2_OIS2 (0x01U << TIM_CR2_OIS2_Pos) ///< Output Idle state 2 (OC2 output)
  137. #define TIM_CR2_OIS2N_Pos (11)
  138. #define TIM_CR2_OIS2N (0x01U << TIM_CR2_OIS2N_Pos) ///< Output Idle state 2 (OC2N output)
  139. #define TIM_CR2_OIS3_Pos (12)
  140. #define TIM_CR2_OIS3 (0x01U << TIM_CR2_OIS3_Pos) ///< Output Idle state 3 (OC3 output)
  141. #define TIM_CR2_OIS3N_Pos (13)
  142. #define TIM_CR2_OIS3N (0x01U << TIM_CR2_OIS3N_Pos) ///< Output Idle state 3 (OC3N output)
  143. #define TIM_CR2_OIS4_Pos (14)
  144. #define TIM_CR2_OIS4 (0x01U << TIM_CR2_OIS4_Pos) ///< Output Idle state 4 (OC4 output)
  145. #define TIM_CR2_OIS5_Pos (16)
  146. #define TIM_CR2_OIS5 (0x01U << TIM_CR2_OIS5_Pos) ///< Output Idle state 5 (OC5 output)
  147. ////////////////////////////////////////////////////////////////////////////////
  148. /// @brief TIM_SMCR Register Bit Definition
  149. ////////////////////////////////////////////////////////////////////////////////
  150. #define TIM_SMCR_SMS_Pos (0)
  151. #define TIM_SMCR_SMS (0x07U << TIM_SMCR_SMS_Pos) ///< SMS[2:0] bits (Slave mode selection)
  152. #define TIM_SMCR_SMS_OFF (0x00U << TIM_SMCR_SMS_Pos) ///< Slave Mode select: OFF
  153. #define TIM_SMCR_SMS_ENCODER1 (0x01U << TIM_SMCR_SMS_Pos) ///< Slave Mode select: Encoder1
  154. #define TIM_SMCR_SMS_ENCODER2 (0x02U << TIM_SMCR_SMS_Pos) ///< Slave Mode select: Encoder2
  155. #define TIM_SMCR_SMS_ENCODER3 (0x03U << TIM_SMCR_SMS_Pos) ///< Slave Mode select: Encoder3
  156. #define TIM_SMCR_SMS_RESET (0x04U << TIM_SMCR_SMS_Pos) ///< Slave Mode select: Reset
  157. #define TIM_SMCR_SMS_GATED (0x05U << TIM_SMCR_SMS_Pos) ///< Slave Mode select: Gated
  158. #define TIM_SMCR_SMS_TRIGGER (0x06U << TIM_SMCR_SMS_Pos) ///< Slave Mode select: Trigger
  159. #define TIM_SMCR_SMS_EXTERNAL1 (0x07U << TIM_SMCR_SMS_Pos) ///< Slave Mode select: External1
  160. #define TIM_SMCR_OCCS_Pos (3)
  161. #define TIM_SMCR_OCCS (0x01U << TIM_SMCR_OCCS_Pos) ///< Output compare clear selection
  162. #define TIM_SMCR_TS_Pos (4)
  163. #define TIM_SMCR_TS (0x07U << TIM_SMCR_TS_Pos) ///< TS[2:0] bits (Trigger selection)
  164. #define TIM_SMCR_TS_ITR0 (0x00U << TIM_SMCR_TS_Pos) ///< Internal Trigger 0 (ITR0)
  165. #define TIM_SMCR_TS_ITR1 (0x01U << TIM_SMCR_TS_Pos) ///< Internal Trigger 1 (ITR1)
  166. #define TIM_SMCR_TS_ITR2 (0x02U << TIM_SMCR_TS_Pos) ///< Internal Trigger 2 (ITR2)
  167. #define TIM_SMCR_TS_ITR3 (0x03U << TIM_SMCR_TS_Pos) ///< Internal Trigger 3 (ITR3)
  168. #define TIM_SMCR_TS_TI1F_ED (0x04U << TIM_SMCR_TS_Pos) ///< TI1 Edge Detector (TI1F_ED)
  169. #define TIM_SMCR_TS_TI1FP1 (0x05U << TIM_SMCR_TS_Pos) ///< Filtered Timer Input 1 (TI1FP1)
  170. #define TIM_SMCR_TS_TI2FP2 (0x06U << TIM_SMCR_TS_Pos) ///< Filtered Timer Input 2 (TI2FP2)
  171. #define TIM_SMCR_TS_ETRF (0x07U << TIM_SMCR_TS_Pos) ///< External Trigger input (ETRF)
  172. #define TIM_SMCR_MSM_Pos (7)
  173. #define TIM_SMCR_MSM (0x01U << TIM_SMCR_MSM_Pos) ///< Master/slave mode
  174. #define TIM_SMCR_ETF_Pos (8)
  175. #define TIM_SMCR_ETF (0x0FU << TIM_SMCR_ETF_Pos) ///< ETF[3:0] bits (External trigger filter)
  176. #define TIM_SMCR_ETF_0 (0x01U << TIM_SMCR_ETF_Pos) ///< Bit 0
  177. #define TIM_SMCR_ETF_1 (0x02U << TIM_SMCR_ETF_Pos) ///< Bit 1
  178. #define TIM_SMCR_ETF_2 (0x04U << TIM_SMCR_ETF_Pos) ///< Bit 2
  179. #define TIM_SMCR_ETF_3 (0x08U << TIM_SMCR_ETF_Pos) ///< Bit 3
  180. #define TIM_SMCR_ETPS_Pos (12)
  181. #define TIM_SMCR_ETPS (0x03U << TIM_SMCR_ETPS_Pos) ///< ETPS[1:0] bits (External trigger prescaler)
  182. #define TIM_SMCR_ETPS_OFF (0x00U << TIM_SMCR_ETPS_Pos) ///< Prescaler OFF
  183. #define TIM_SMCR_ETPS_DIV2 (0x01U << TIM_SMCR_ETPS_Pos) ///< ETRP frequency divided by 2
  184. #define TIM_SMCR_ETPS_DIV4 (0x02U << TIM_SMCR_ETPS_Pos) ///< ETRP frequency divided by 4
  185. #define TIM_SMCR_ETPS_DIV8 (0x03U << TIM_SMCR_ETPS_Pos) ///< ETRP frequency divided by 8
  186. #define TIM_SMCR_ECEN_Pos (14)
  187. #define TIM_SMCR_ECEN (0x01U << TIM_SMCR_ECEN_Pos) ///< External clock enable
  188. #define TIM_SMCR_ETP_Pos (15)
  189. #define TIM_SMCR_ETP (0x01U << TIM_SMCR_ETP_Pos) ///< External trigger polarity
  190. ////////////////////////////////////////////////////////////////////////////////
  191. /// @brief TIM_DIER Register Bit Definition
  192. ////////////////////////////////////////////////////////////////////////////////
  193. #define TIM_DIER_UI_Pos (0)
  194. #define TIM_DIER_UI (0x01U << TIM_DIER_UI_Pos) ///< Update interrupt enable
  195. #define TIM_DIER_CC1I_Pos (1)
  196. #define TIM_DIER_CC1I (0x01U << TIM_DIER_CC1I_Pos) ///< Capture/Compare 1 interrupt enable
  197. #define TIM_DIER_CC2I_Pos (2)
  198. #define TIM_DIER_CC2I (0x01U << TIM_DIER_CC2I_Pos) ///< Capture/Compare 2 interrupt enable
  199. #define TIM_DIER_CC3I_Pos (3)
  200. #define TIM_DIER_CC3I (0x01U << TIM_DIER_CC3I_Pos) ///< Capture/Compare 3 interrupt enable
  201. #define TIM_DIER_CC4I_Pos (4)
  202. #define TIM_DIER_CC4I (0x01U << TIM_DIER_CC4I_Pos) ///< Capture/Compare 4 interrupt enable
  203. #define TIM_DIER_COMI_Pos (5)
  204. #define TIM_DIER_COMI (0x01U << TIM_DIER_COMI_Pos) ///< COM interrupt enable
  205. #define TIM_DIER_TI_Pos (6)
  206. #define TIM_DIER_TI (0x01U << TIM_DIER_TI_Pos) ///< Trigger interrupt enable
  207. #define TIM_DIER_BI_Pos (7)
  208. #define TIM_DIER_BI (0x01U << TIM_DIER_BI_Pos) ///< Break interrupt enable
  209. #define TIM_DIER_UD_Pos (8)
  210. #define TIM_DIER_UD (0x01U << TIM_DIER_UD_Pos) ///< Update DMA request enable
  211. #define TIM_DIER_CC1D_Pos (9)
  212. #define TIM_DIER_CC1D (0x01U << TIM_DIER_CC1D_Pos) ///< Capture/Compare 1 DMA request enable
  213. #define TIM_DIER_CC2D_Pos (10)
  214. #define TIM_DIER_CC2D (0x01U << TIM_DIER_CC2D_Pos) ///< Capture/Compare 2 DMA request enable
  215. #define TIM_DIER_CC3D_Pos (11)
  216. #define TIM_DIER_CC3D (0x01U << TIM_DIER_CC3D_Pos) ///< Capture/Compare 3 DMA request enable
  217. #define TIM_DIER_CC4D_Pos (12)
  218. #define TIM_DIER_CC4D (0x01U << TIM_DIER_CC4D_Pos) ///< Capture/Compare 4 DMA request enable
  219. #define TIM_DIER_COMD_Pos (13)
  220. #define TIM_DIER_COMD (0x01U << TIM_DIER_COMD_Pos) ///< COM DMA request enable
  221. #define TIM_DIER_TD_Pos (14)
  222. #define TIM_DIER_TD (0x01U << TIM_DIER_TD_Pos) ///< Trigger DMA request enable
  223. #define TIM_DIER_CC5I_Pos (16)
  224. #define TIM_DIER_CC5I (0x01U << TIM_DIER_CC5I_Pos) ///< Capture/Compare 5 interrupt enable
  225. ////////////////////////////////////////////////////////////////////////////////
  226. /// @brief TIM_SR Register Bit Definition
  227. ////////////////////////////////////////////////////////////////////////////////
  228. #define TIM_SR_UI_Pos (0)
  229. #define TIM_SR_UI (0x01U << TIM_SR_UI_Pos) ///< Update interrupt Flag
  230. #define TIM_SR_CC1I_Pos (1)
  231. #define TIM_SR_CC1I (0x01U << TIM_SR_CC1I_Pos) ///< Capture/Compare 1 interrupt Flag
  232. #define TIM_SR_CC2I_Pos (2)
  233. #define TIM_SR_CC2I (0x01U << TIM_SR_CC2I_Pos) ///< Capture/Compare 2 interrupt Flag
  234. #define TIM_SR_CC3I_Pos (3)
  235. #define TIM_SR_CC3I (0x01U << TIM_SR_CC3I_Pos) ///< Capture/Compare 3 interrupt Flag
  236. #define TIM_SR_CC4I_Pos (4)
  237. #define TIM_SR_CC4I (0x01U << TIM_SR_CC4I_Pos) ///< Capture/Compare 4 interrupt Flag
  238. #define TIM_SR_COMI_Pos (5)
  239. #define TIM_SR_COMI (0x01U << TIM_SR_COMI_Pos) ///< COM interrupt Flag
  240. #define TIM_SR_TI_Pos (6)
  241. #define TIM_SR_TI (0x01U << TIM_SR_TI_Pos) ///< Trigger interrupt Flag
  242. #define TIM_SR_BI_Pos (7)
  243. #define TIM_SR_BI (0x01U << TIM_SR_BI_Pos) ///< Break interrupt Flag
  244. #define TIM_SR_CC1O_Pos (9)
  245. #define TIM_SR_CC1O (0x01U << TIM_SR_CC1O_Pos) ///< Capture/Compare 1 Overcapture Flag
  246. #define TIM_SR_CC2O_Pos (10)
  247. #define TIM_SR_CC2O (0x01U << TIM_SR_CC2O_Pos) ///< Capture/Compare 2 Overcapture Flag
  248. #define TIM_SR_CC3O_Pos (11)
  249. #define TIM_SR_CC3O (0x01U << TIM_SR_CC3O_Pos) ///< Capture/Compare 3 Overcapture Flag
  250. #define TIM_SR_CC4O_Pos (12)
  251. #define TIM_SR_CC4O (0x01U << TIM_SR_CC4O_Pos) ///< Capture/Compare 4 Overcapture Flag
  252. #define TIM_SR_CC5I_Pos (16)
  253. #define TIM_SR_CC5I (0x01U << TIM_SR_CC5I_Pos) ///< Capture/Compare 5 interrupt Flag
  254. ////////////////////////////////////////////////////////////////////////////////
  255. /// @brief TIM_EGR Register Bit Definition
  256. ////////////////////////////////////////////////////////////////////////////////
  257. #define TIM_EGR_UG_Pos (0)
  258. #define TIM_EGR_UG (0x01U << TIM_EGR_UG_Pos) ///< Update Generation
  259. #define TIM_EGR_CC1G_Pos (1)
  260. #define TIM_EGR_CC1G (0x01U << TIM_EGR_CC1G_Pos) ///< Capture/Compare 1 Generation
  261. #define TIM_EGR_CC2G_Pos (2)
  262. #define TIM_EGR_CC2G (0x01U << TIM_EGR_CC2G_Pos) ///< Capture/Compare 2 Generation
  263. #define TIM_EGR_CC3G_Pos (3)
  264. #define TIM_EGR_CC3G (0x01U << TIM_EGR_CC3G_Pos) ///< Capture/Compare 3 Generation
  265. #define TIM_EGR_CC4G_Pos (4)
  266. #define TIM_EGR_CC4G (0x01U << TIM_EGR_CC4G_Pos) ///< Capture/Compare 4 Generation
  267. #define TIM_EGR_COMG_Pos (5)
  268. #define TIM_EGR_COMG (0x01U << TIM_EGR_COMG_Pos) ///< Capture/Compare Control Update Generation
  269. #define TIM_EGR_TG_Pos (6)
  270. #define TIM_EGR_TG (0x01U << TIM_EGR_TG_Pos) ///< Trigger Generation
  271. #define TIM_EGR_BG_Pos (7)
  272. #define TIM_EGR_BG (0x01U << TIM_EGR_BG_Pos) ///< Break Generation
  273. #define TIM_EGR_CC5G_Pos (16)
  274. #define TIM_EGR_CC5G (0x01U << TIM_EGR_CC5G_Pos) ///< Capture/Compare 5 Generation
  275. ////////////////////////////////////////////////////////////////////////////////
  276. /// @brief TIM_CCMR1 Register Bit Definition
  277. ////////////////////////////////////////////////////////////////////////////////
  278. #define TIM_CCMR1_CC1S_Pos (0)
  279. #define TIM_CCMR1_CC1S (0x03U << TIM_CCMR1_CC1S_Pos) ///< CC1S[1:0] bits (Capture/Compare 1 Selection)
  280. #define TIM_CCMR1_CC1S_OC (0x00U << TIM_CCMR1_CC1S_Pos) ///< Channel is configured as output
  281. #define TIM_CCMR1_CC1S_DIRECTTI (0x01U << TIM_CCMR1_CC1S_Pos) ///< Channel is configured as input, IC1 is mapped on TI1
  282. #define TIM_CCMR1_CC1S_INDIRECTTI (0x02U << TIM_CCMR1_CC1S_Pos) ///< Channel is configured as input, IC1 is mapped on TI2
  283. #define TIM_CCMR1_CC1S_TRC (0x03U << TIM_CCMR1_CC1S_Pos) ///< Channel is configured as input, IC1 is mapped on TRC
  284. #define TIM_CCMR1_OC1FEN_Pos (2)
  285. #define TIM_CCMR1_OC1FEN (0x01U << TIM_CCMR1_OC1FEN_Pos) ///< Output Compare 1 Fast enable
  286. #define TIM_CCMR1_OC1PEN_Pos (3)
  287. #define TIM_CCMR1_OC1PEN (0x01U << TIM_CCMR1_OC1PEN_Pos) ///< Output Compare 1 Preload enable
  288. #define TIM_CCMR1_OC1M_Pos (4)
  289. #define TIM_CCMR1_OC1M (0x07U << TIM_CCMR1_OC1M_Pos) ///< OC1M[2:0] bits (Output Compare 1 Mode)
  290. #define TIM_CCMR1_OC1M_TIMING (0x00U << TIM_CCMR1_OC1M_Pos) ///< Timing
  291. #define TIM_CCMR1_OC1M_ACTIVE (0x01U << TIM_CCMR1_OC1M_Pos) ///< Active
  292. #define TIM_CCMR1_OC1M_INACTIVE (0x02U << TIM_CCMR1_OC1M_Pos) ///< Inactive
  293. #define TIM_CCMR1_OC1M_TOGGLE (0x03U << TIM_CCMR1_OC1M_Pos) ///< Toggle
  294. #define TIM_CCMR1_OC1M_FORCEINACTIVE (0x04U << TIM_CCMR1_OC1M_Pos) ///< Forceinactive
  295. #define TIM_CCMR1_OC1M_FORCEACTIVE (0x05U << TIM_CCMR1_OC1M_Pos) ///< Forceactive
  296. #define TIM_CCMR1_OC1M_PWM1 (0x06U << TIM_CCMR1_OC1M_Pos) ///< PWM1
  297. #define TIM_CCMR1_OC1M_PWM2 (0x07U << TIM_CCMR1_OC1M_Pos) ///< PWM2
  298. #define TIM_CCMR1_OC1CEN_Pos (7)
  299. #define TIM_CCMR1_OC1CEN (0x01U << TIM_CCMR1_OC1CEN_Pos) ///< Output Compare 1Clear Enable
  300. #define TIM_CCMR1_CC2S_Pos (8)
  301. #define TIM_CCMR1_CC2S (0x03U << TIM_CCMR1_CC2S_Pos) ///< CC2S[1:0] bits (Capture/Compare 2 Selection)
  302. #define TIM_CCMR1_CC2S_OC (0x00U << TIM_CCMR1_CC2S_Pos) ///< Channel is configured as output
  303. #define TIM_CCMR1_CC2S_DIRECTTI (0x01U << TIM_CCMR1_CC2S_Pos) ///< Channel is configured as input, IC2 is mapped on TI2
  304. #define TIM_CCMR1_CC2S_INDIRECTTI (0x02U << TIM_CCMR1_CC2S_Pos) ///< Channel is configured as input, IC2 is mapped on TI1
  305. #define TIM_CCMR1_CC2S_TRC (0x03U << TIM_CCMR1_CC2S_Pos) ///< Channel is configured as input, IC2 is mapped on TRC
  306. #define TIM_CCMR1_OC2FEN_Pos (10)
  307. #define TIM_CCMR1_OC2FEN (0x01U << TIM_CCMR1_OC2FEN_Pos) ///< Output Compare 2 Fast enable
  308. #define TIM_CCMR1_OC2PEN_Pos (11)
  309. #define TIM_CCMR1_OC2PEN (0x01U << TIM_CCMR1_OC2PEN_Pos) ///< Output Compare 2 Preload enable
  310. #define TIM_CCMR1_OC2M_Pos (12)
  311. #define TIM_CCMR1_OC2M (0x07U << TIM_CCMR1_OC2M_Pos) ///< OC2M[2:0] bits (Output Compare 2 Mode)
  312. #define TIM_CCMR1_OC2M_TIMING (0x00U << TIM_CCMR1_OC2M_Pos) ///< Timing
  313. #define TIM_CCMR1_OC2M_ACTIVE (0x01U << TIM_CCMR1_OC2M_Pos) ///< Active
  314. #define TIM_CCMR1_OC2M_INACTIVE (0x02U << TIM_CCMR1_OC2M_Pos) ///< Inactive
  315. #define TIM_CCMR1_OC2M_TOGGLE (0x03U << TIM_CCMR1_OC2M_Pos) ///< Toggle
  316. #define TIM_CCMR1_OC2M_FORCEINACTIVE (0x04U << TIM_CCMR1_OC2M_Pos) ///< Forceinactive
  317. #define TIM_CCMR1_OC2M_FORCEACTIVE (0x05U << TIM_CCMR1_OC2M_Pos) ///< Forceactive
  318. #define TIM_CCMR1_OC2M_PWM1 (0x06U << TIM_CCMR1_OC2M_Pos) ///< PWM1
  319. #define TIM_CCMR1_OC2M_PWM2 (0x07U << TIM_CCMR1_OC2M_Pos) ///< PWM2
  320. #define TIM_CCMR1_OC2CEN_Pos (15)
  321. #define TIM_CCMR1_OC2CEN (0x01U << TIM_CCMR1_OC2CEN_Pos) ///< Output Compare 2 Clear Enable
  322. #define TIM_CCMR1_IC1PSC_Pos (2)
  323. #define TIM_CCMR1_IC1PSC (0x03U << TIM_CCMR1_IC1PSC_Pos) ///< IC1PSC[1:0] bits (Input Capture 1 Prescaler)
  324. #define TIM_CCMR1_IC1PSC_DIV1 (0x00U << TIM_CCMR1_IC1PSC_Pos) ///< No Prescaler
  325. #define TIM_CCMR1_IC1PSC_DIV2 (0x01U << TIM_CCMR1_IC1PSC_Pos) ///< Capture is done once every 2 events
  326. #define TIM_CCMR1_IC1PSC_DIV4 (0x02U << TIM_CCMR1_IC1PSC_Pos) ///< Capture is done once every 4 events
  327. #define TIM_CCMR1_IC1PSC_DIV8 (0x03U << TIM_CCMR1_IC1PSC_Pos) ///< Capture is done once every 8 events
  328. #define TIM_CCMR1_IC1F_Pos (4)
  329. #define TIM_CCMR1_IC1F (0x0FU << TIM_CCMR1_IC1F_Pos) ///< IC1F[3:0] bits (Input Capture 1 Filter)
  330. #define TIM_CCMR1_IC1F_0 (0x01U << TIM_CCMR1_IC1F_Pos) ///< Bit 0
  331. #define TIM_CCMR1_IC1F_1 (0x02U << TIM_CCMR1_IC1F_Pos) ///< Bit 1
  332. #define TIM_CCMR1_IC1F_2 (0x04U << TIM_CCMR1_IC1F_Pos) ///< Bit 2
  333. #define TIM_CCMR1_IC1F_3 (0x08U << TIM_CCMR1_IC1F_Pos) ///< Bit 3
  334. #define TIM_CCMR1_IC2PSC_Pos (10)
  335. #define TIM_CCMR1_IC2PSC (0x03U << TIM_CCMR1_IC2PSC_Pos) ///< IC2PSC[1:0] bits (Input Capture 2 Prescaler)
  336. #define TIM_CCMR1_IC2PSC_DIV1 (0x00U << TIM_CCMR1_IC2PSC_Pos) ///< No Prescaler
  337. #define TIM_CCMR1_IC2PSC_DIV2 (0x01U << TIM_CCMR1_IC2PSC_Pos) ///< Capture is done once every 2 events
  338. #define TIM_CCMR1_IC2PSC_DIV4 (0x02U << TIM_CCMR1_IC2PSC_Pos) ///< Capture is done once every 4 events
  339. #define TIM_CCMR1_IC2PSC_DIV8 (0x03U << TIM_CCMR1_IC2PSC_Pos) ///< Capture is done once every 8 events
  340. #define TIM_CCMR1_IC2F_Pos (12)
  341. #define TIM_CCMR1_IC2F (0x0FU << TIM_CCMR1_IC2F_Pos) ///< IC2F[3:0] bits (Input Capture 2 Filter)
  342. #define TIM_CCMR1_IC2F_0 (0x01U << TIM_CCMR1_IC2F_Pos) ///< Bit 0
  343. #define TIM_CCMR1_IC2F_1 (0x02U << TIM_CCMR1_IC2F_Pos) ///< Bit 1
  344. #define TIM_CCMR1_IC2F_2 (0x04U << TIM_CCMR1_IC2F_Pos) ///< Bit 2
  345. #define TIM_CCMR1_IC2F_3 (0x08U << TIM_CCMR1_IC2F_Pos) ///< Bit 3
  346. ////////////////////////////////////////////////////////////////////////////////
  347. /// @brief TIM_CCMR2 Register Bit Definition
  348. ////////////////////////////////////////////////////////////////////////////////
  349. #define TIM_CCMR2_CC3S_Pos (0)
  350. #define TIM_CCMR2_CC3S (0x03U << TIM_CCMR2_CC3S_Pos) ///< CC3S[1:0] bits (Capture/Compare 3 Selection)
  351. #define TIM_CCMR2_CC3S_OC (0x00U << TIM_CCMR2_CC3S_Pos) ///< Channel is configured as output
  352. #define TIM_CCMR2_CC3S_DIRECTTI (0x01U << TIM_CCMR2_CC3S_Pos) ///< Channel is configured as input, IC3 is mapped on TI3
  353. #define TIM_CCMR2_CC3S_INDIRECTTI (0x02U << TIM_CCMR2_CC3S_Pos) ///< Channel is configured as input, IC3 is mapped on TI4
  354. #define TIM_CCMR2_CC3S_TRC (0x03U << TIM_CCMR2_CC3S_Pos) ///< Channel is configured as input, IC3 is mapped on TRC
  355. #define TIM_CCMR2_OC3FEN_Pos (2)
  356. #define TIM_CCMR2_OC3FEN (0x01U << TIM_CCMR2_OC3FEN_Pos) ///< Output Compare 3 Fast enable
  357. #define TIM_CCMR2_IC3PSC_Pos (2)
  358. #define TIM_CCMR2_IC3PSC (0x03U << TIM_CCMR2_IC3PSC_Pos) ///< IC3PSC[1:0] bits (Input Capture 3 Prescaler)
  359. #define TIM_CCMR2_IC3PSC_DIV1 (0x00U << TIM_CCMR2_IC3PSC_Pos) ///< No Prescaler
  360. #define TIM_CCMR2_IC3PSC_DIV2 (0x01U << TIM_CCMR2_IC3PSC_Pos) ///< Capture is done once every 2 events
  361. #define TIM_CCMR2_IC3PSC_DIV4 (0x02U << TIM_CCMR2_IC3PSC_Pos) ///< Capture is done once every 4 events
  362. #define TIM_CCMR2_IC3PSC_DIV8 (0x03U << TIM_CCMR2_IC3PSC_Pos) ///< Capture is done once every 8 events
  363. #define TIM_CCMR2_OC3PEN_Pos (3)
  364. #define TIM_CCMR2_OC3PEN (0x01U << TIM_CCMR2_OC3PEN_Pos) ///< Output Compare 3 Preload enable
  365. #define TIM_CCMR2_OC3M_Pos (4)
  366. #define TIM_CCMR2_OC3M (0x07U << TIM_CCMR2_OC3M_Pos) ///< OC3M[2:0] bits (Output Compare 3 Mode)
  367. #define TIM_CCMR2_OC3M_TIMING (0x00U << TIM_CCMR2_OC3M_Pos) ///< Timing
  368. #define TIM_CCMR2_OC3M_ACTIVE (0x01U << TIM_CCMR2_OC3M_Pos) ///< Active
  369. #define TIM_CCMR2_OC3M_INACTIVE (0x02U << TIM_CCMR2_OC3M_Pos) ///< Inactive
  370. #define TIM_CCMR2_OC3M_TOGGLE (0x03U << TIM_CCMR2_OC3M_Pos) ///< Toggle
  371. #define TIM_CCMR2_OC3M_FORCEINACTIVE (0x04U << TIM_CCMR2_OC3M_Pos) ///< Forceinactive
  372. #define TIM_CCMR2_OC3M_FORCEACTIVE (0x05U << TIM_CCMR2_OC3M_Pos) ///< Forceactive
  373. #define TIM_CCMR2_OC3M_PWM1 (0x06U << TIM_CCMR2_OC3M_Pos) ///< PWM1
  374. #define TIM_CCMR2_OC3M_PWM2 (0x07U << TIM_CCMR2_OC3M_Pos) ///< PWM2
  375. #define TIM_CCMR2_IC3F_Pos (4)
  376. #define TIM_CCMR2_IC3F (0x0FU << TIM_CCMR2_IC3F_Pos) ///< IC3F[3:0] bits (Input Capture 3 Filter)
  377. #define TIM_CCMR2_IC3F_0 (0x01U << TIM_CCMR2_IC3F_Pos) ///< Bit 0
  378. #define TIM_CCMR2_IC3F_1 (0x02U << TIM_CCMR2_IC3F_Pos) ///< Bit 1
  379. #define TIM_CCMR2_IC3F_2 (0x04U << TIM_CCMR2_IC3F_Pos) ///< Bit 2
  380. #define TIM_CCMR2_IC3F_3 (0x08U << TIM_CCMR2_IC3F_Pos) ///< Bit 3
  381. #define TIM_CCMR2_OC3CEN_Pos (7)
  382. #define TIM_CCMR2_OC3CEN (0x01U << TIM_CCMR2_OC3CEN_Pos) ///< Output Compare 3 Clear Enable
  383. #define TIM_CCMR2_CC4S_Pos (8)
  384. #define TIM_CCMR2_CC4S (0x03U << TIM_CCMR2_CC4S_Pos) ///< CC4S[1:0] bits (Capture/Compare 4 Selection)
  385. #define TIM_CCMR2_CC4S_OC (0x00U << TIM_CCMR2_CC4S_Pos) ///< Channel is configured as output
  386. #define TIM_CCMR2_CC4S_DIRECTTI (0x01U << TIM_CCMR2_CC4S_Pos) ///< Channel is configured as input, IC4 is mapped on TI4
  387. #define TIM_CCMR2_CC4S_INDIRECTTI (0x02U << TIM_CCMR2_CC4S_Pos) ///< Channel is configured as input, IC4 is mapped on TI3
  388. #define TIM_CCMR2_CC4S_TRC (0x03U << TIM_CCMR2_CC4S_Pos) ///< Channel is configured as input, IC4 is mapped on TRC
  389. #define TIM_CCMR2_OC4FEN_Pos (10)
  390. #define TIM_CCMR2_OC4FEN (0x01U << TIM_CCMR2_OC4FEN_Pos) ///< Output Compare 4 Fast enable
  391. #define TIM_CCMR2_OC4PEN_Pos (11)
  392. #define TIM_CCMR2_OC4PEN (0x01U << TIM_CCMR2_OC4PEN_Pos) ///< Output Compare 4 Preload enable
  393. #define TIM_CCMR2_OC4M_Pos (12)
  394. #define TIM_CCMR2_OC4M (0x07U << TIM_CCMR2_OC4M_Pos) ///< OC4M[2:0] bits (Output Compare 4 Mode)
  395. #define TIM_CCMR2_OC4M_TIMING (0x00U << TIM_CCMR2_OC4M_Pos) ///< Timing
  396. #define TIM_CCMR2_OC4M_ACTIVE (0x01U << TIM_CCMR2_OC4M_Pos) ///< Active
  397. #define TIM_CCMR2_OC4M_INACTIVE (0x02U << TIM_CCMR2_OC4M_Pos) ///< Inactive
  398. #define TIM_CCMR2_OC4M_TOGGLE (0x03U << TIM_CCMR2_OC4M_Pos) ///< Toggle
  399. #define TIM_CCMR2_OC4M_FORCEINACTIVE (0x04U << TIM_CCMR2_OC4M_Pos) ///< Forceinactive
  400. #define TIM_CCMR2_OC4M_FORCEACTIVE (0x05U << TIM_CCMR2_OC4M_Pos) ///< Forceactive
  401. #define TIM_CCMR2_OC4M_PWM1 (0x06U << TIM_CCMR2_OC4M_Pos) ///< PWM1
  402. #define TIM_CCMR2_OC4M_PWM2 (0x07U << TIM_CCMR2_OC4M_Pos) ///< PWM2
  403. #define TIM_CCMR2_OC4CEN_Pos (15)
  404. #define TIM_CCMR2_OC4CEN (0x01U << TIM_CCMR2_OC4CEN_Pos) ///< Output Compare 4 Clear Enable
  405. #define TIM_CCMR2_IC4PSC_Pos (10)
  406. #define TIM_CCMR2_IC4PSC (0x03U << TIM_CCMR2_IC4PSC_Pos) ///< IC4PSC[1:0] bits (Input Capture 4 Prescaler)
  407. #define TIM_CCMR2_IC4PSC_DIV1 (0x00U << TIM_CCMR2_IC4PSC_Pos) ///< No Prescaler
  408. #define TIM_CCMR2_IC4PSC_DIV2 (0x01U << TIM_CCMR2_IC4PSC_Pos) ///< Capture is done once every 2 events
  409. #define TIM_CCMR2_IC4PSC_DIV4 (0x02U << TIM_CCMR2_IC4PSC_Pos) ///< Capture is done once every 4 events
  410. #define TIM_CCMR2_IC4PSC_DIV8 (0x03U << TIM_CCMR2_IC4PSC_Pos) ///< Capture is done once every 8 events
  411. #define TIM_CCMR2_IC4F_Pos (12)
  412. #define TIM_CCMR2_IC4F (0x0FU << TIM_CCMR2_IC4F_Pos) ///< IC4F[3:0] bits (Input Capture 4 Filter)
  413. #define TIM_CCMR2_IC4F_0 (0x01U << TIM_CCMR2_IC4F_Pos) ///< Bit 0
  414. #define TIM_CCMR2_IC4F_1 (0x02U << TIM_CCMR2_IC4F_Pos) ///< Bit 1
  415. #define TIM_CCMR2_IC4F_2 (0x04U << TIM_CCMR2_IC4F_Pos) ///< Bit 2
  416. #define TIM_CCMR2_IC4F_3 (0x08U << TIM_CCMR2_IC4F_Pos) ///< Bit 3
  417. ////////////////////////////////////////////////////////////////////////////////
  418. /// @brief TIM_CCER Register Bit Definition
  419. ////////////////////////////////////////////////////////////////////////////////
  420. #define TIM_CCER_CC1EN_Pos (0)
  421. #define TIM_CCER_CC1EN (0x01U << TIM_CCER_CC1EN_Pos) ///< Capture/Compare 1 output enable
  422. #define TIM_CCER_CC1P_Pos (1)
  423. #define TIM_CCER_CC1P (0x01U << TIM_CCER_CC1P_Pos) ///< Capture/Compare 1 output Polarity
  424. #define TIM_CCER_CC1NEN_Pos (2)
  425. #define TIM_CCER_CC1NEN (0x01U << TIM_CCER_CC1NEN_Pos) ///< Capture/Compare 1 Complementary output enable
  426. #define TIM_CCER_CC1NP_Pos (3)
  427. #define TIM_CCER_CC1NP (0x01U << TIM_CCER_CC1NP_Pos) ///< Capture/Compare 1 Complementary output Polarity
  428. #define TIM_CCER_CC2EN_Pos (4)
  429. #define TIM_CCER_CC2EN (0x01U << TIM_CCER_CC2EN_Pos) ///< Capture/Compare 2 output enable
  430. #define TIM_CCER_CC2P_Pos (5)
  431. #define TIM_CCER_CC2P (0x01U << TIM_CCER_CC2P_Pos) ///< Capture/Compare 2 output Polarity
  432. #define TIM_CCER_CC2NEN_Pos (6)
  433. #define TIM_CCER_CC2NEN (0x01U << TIM_CCER_CC2NEN_Pos) ///< Capture/Compare 2 Complementary output enable
  434. #define TIM_CCER_CC2NP_Pos (7)
  435. #define TIM_CCER_CC2NP (0x01U << TIM_CCER_CC2NP_Pos) ///< Capture/Compare 2 Complementary output Polarity
  436. #define TIM_CCER_CC3EN_Pos (8)
  437. #define TIM_CCER_CC3EN (0x01U << TIM_CCER_CC3EN_Pos) ///< Capture/Compare 3 output enable
  438. #define TIM_CCER_CC3P_Pos (9)
  439. #define TIM_CCER_CC3P (0x01U << TIM_CCER_CC3P_Pos) ///< Capture/Compare 3 output Polarity
  440. #define TIM_CCER_CC3NEN_Pos (10)
  441. #define TIM_CCER_CC3NEN (0x01U << TIM_CCER_CC3NEN_Pos) ///< Capture/Compare 3 Complementary output enable
  442. #define TIM_CCER_CC3NP_Pos (11)
  443. #define TIM_CCER_CC3NP (0x01U << TIM_CCER_CC3NP_Pos) ///< Capture/Compare 3 Complementary output Polarity
  444. #define TIM_CCER_CC4EN_Pos (12)
  445. #define TIM_CCER_CC4EN (0x01U << TIM_CCER_CC4EN_Pos) ///< Capture/Compare 4 output enable
  446. #define TIM_CCER_CC4P_Pos (13)
  447. #define TIM_CCER_CC4P (0x01U << TIM_CCER_CC4P_Pos) ///< Capture/Compare 4 output Polarity
  448. #define TIM_CCER_CC4NP_Pos (15)
  449. #define TIM_CCER_CC4NP (0x01U << TIM_CCER_CC4NP_Pos) ///< Capture/Compare 4 complementary output polarity
  450. #define TIM_CCER_CC5EN_Pos (16)
  451. #define TIM_CCER_CC5EN (0x01U << TIM_CCER_CC5EN_Pos) ///< Capture/Compare 5 output enable
  452. #define TIM_CCER_CC5P_Pos (17)
  453. #define TIM_CCER_CC5P (0x01U << TIM_CCER_CC5P_Pos) ///< Capture/Compare 5 output Polarity
  454. ////////////////////////////////////////////////////////////////////////////////
  455. /// @brief TIM_CNT Register Bit Definition
  456. ////////////////////////////////////////////////////////////////////////////////
  457. #define TIM_CNT_CNT (0xFFFFU) ///< Counter Value
  458. ////////////////////////////////////////////////////////////////////////////////
  459. /// @brief TIM_PSC Register Bit Definition
  460. ////////////////////////////////////////////////////////////////////////////////
  461. #define TIM_PSC_PSC (0xFFFFU) ///< Prescaler Value
  462. ////////////////////////////////////////////////////////////////////////////////
  463. /// @brief TIM_ARR Register Bit Definition
  464. ////////////////////////////////////////////////////////////////////////////////
  465. #define TIM_ARR_ARR (0xFFFFU) ///< actual auto-reload Value
  466. ////////////////////////////////////////////////////////////////////////////////
  467. /// @brief TIM_RCR Register Bit Definition
  468. ////////////////////////////////////////////////////////////////////////////////
  469. #define TIM_RCR_REP (0xFFU) ///< Repetition Counter Value
  470. #define TIM_RCR_REP_CNT_Pos (8)
  471. #define TIM_RCR_REP_CNT (0xFFU << TIM_RCR_REP_CNT_Pos) ///< Repetition counter value of real-time writing
  472. ////////////////////////////////////////////////////////////////////////////////
  473. /// @brief TIM_CCR1 Register Bit Definition
  474. ////////////////////////////////////////////////////////////////////////////////
  475. #define TIM_CCR1_CCR1 (0xFFFFU) ///< Capture/Compare 1 Value
  476. ////////////////////////////////////////////////////////////////////////////////
  477. /// @brief TIM_CCR2 Register Bit Definition
  478. ////////////////////////////////////////////////////////////////////////////////
  479. #define TIM_CCR2_CCR2 (0xFFFFU) ///< Capture/Compare 2 Value
  480. ////////////////////////////////////////////////////////////////////////////////
  481. /// @brief TIM_CCR3 Register Bit Definition
  482. ////////////////////////////////////////////////////////////////////////////////
  483. #define TIM_CCR3_CCR3 (0xFFFFU) ///< Capture/Compare 3 Value
  484. ////////////////////////////////////////////////////////////////////////////////
  485. /// @brief TIM_CCR4 Register Bit Definition
  486. ////////////////////////////////////////////////////////////////////////////////
  487. #define TIM_CCR4_CCR4 (0xFFFFU) ///< Capture/Compare 4 Value
  488. ////////////////////////////////////////////////////////////////////////////////
  489. /// @brief TIM_BDTR Register Bit Definition
  490. ////////////////////////////////////////////////////////////////////////////////
  491. #define TIM_BDTR_DTG_Pos (0)
  492. #define TIM_BDTR_DTG (0xFFU << TIM_BDTR_DTG_Pos) ///< DTG[0:7] bits (Dead-Time Generator set-up)
  493. #define TIM_BDTR_DTG_0 (0x01U << TIM_BDTR_DTG_Pos) ///< Bit 0
  494. #define TIM_BDTR_DTG_1 (0x02U << TIM_BDTR_DTG_Pos) ///< Bit 1
  495. #define TIM_BDTR_DTG_2 (0x04U << TIM_BDTR_DTG_Pos) ///< Bit 2
  496. #define TIM_BDTR_DTG_3 (0x08U << TIM_BDTR_DTG_Pos) ///< Bit 3
  497. #define TIM_BDTR_DTG_4 (0x10U << TIM_BDTR_DTG_Pos) ///< Bit 4
  498. #define TIM_BDTR_DTG_5 (0x20U << TIM_BDTR_DTG_Pos) ///< Bit 5
  499. #define TIM_BDTR_DTG_6 (0x40U << TIM_BDTR_DTG_Pos) ///< Bit 6
  500. #define TIM_BDTR_DTG_7 (0x80U << TIM_BDTR_DTG_Pos) ///< Bit 7
  501. #define TIM_BDTR_LOCK_Pos (8)
  502. #define TIM_BDTR_LOCK (0x03U << TIM_BDTR_LOCK_Pos) ///< LOCK[1:0] bits (Lock Configuration)
  503. #define TIM_BDTR_LOCK_OFF (0x00U << TIM_BDTR_LOCK_Pos) ///< Lock Off
  504. #define TIM_BDTR_LOCK_1 (0x01U << TIM_BDTR_LOCK_Pos) ///< Lock Level 1
  505. #define TIM_BDTR_LOCK_2 (0x02U << TIM_BDTR_LOCK_Pos) ///< Lock Level 2
  506. #define TIM_BDTR_LOCK_3 (0x03U << TIM_BDTR_LOCK_Pos) ///< Lock Level 3
  507. #define TIM_BDTR_OSSI_Pos (10)
  508. #define TIM_BDTR_OSSI (0x01U << TIM_BDTR_OSSI_Pos) ///< Off-State Selection for Idle mode
  509. #define TIM_BDTR_OSSR_Pos (11)
  510. #define TIM_BDTR_OSSR (0x01U << TIM_BDTR_OSSR_Pos) ///< Off-State Selection for Run mode
  511. #define TIM_BDTR_BKEN_Pos (12)
  512. #define TIM_BDTR_BKEN (0x01U << TIM_BDTR_BKEN_Pos) ///< Break enable
  513. #define TIM_BDTR_BKP_Pos (13)
  514. #define TIM_BDTR_BKP (0x01U << TIM_BDTR_BKP_Pos) ///< Break Polarity
  515. #define TIM_BDTR_AOEN_Pos (14)
  516. #define TIM_BDTR_AOEN (0x01U << TIM_BDTR_AOEN_Pos) ///< Automatic Output enable
  517. #define TIM_BDTR_MOEN_Pos (15)
  518. #define TIM_BDTR_MOEN (0x01U << TIM_BDTR_MOEN_Pos) ///< Main Output enable
  519. #define TIM_BDTR_DOEN_Pos (16)
  520. #define TIM_BDTR_DOEN (0x01U << TIM_BDTR_DOEN_Pos) ///< Direct Output enable
  521. ////////////////////////////////////////////////////////////////////////////////
  522. /// @brief TIM_DCR Register Bit Definition
  523. ////////////////////////////////////////////////////////////////////////////////
  524. #define TIM_DCR_DBA_Pos (0)
  525. #define TIM_DCR_DBA (0x1FU << TIM_DCR_DBA_Pos) ///< DBA[4:0] bits (DMA Base Address)
  526. #define TIM_DCR_DBA_0 (0x01U << TIM_DCR_DBA_Pos) ///< Bit 0
  527. #define TIM_DCR_DBA_1 (0x02U << TIM_DCR_DBA_Pos) ///< Bit 1
  528. #define TIM_DCR_DBA_2 (0x04U << TIM_DCR_DBA_Pos) ///< Bit 2
  529. #define TIM_DCR_DBA_3 (0x08U << TIM_DCR_DBA_Pos) ///< Bit 3
  530. #define TIM_DCR_DBA_4 (0x10U << TIM_DCR_DBA_Pos) ///< Bit 4
  531. #define TIM_DCR_DBL_Pos (8)
  532. #define TIM_DCR_DBL (0x1FU << TIM_DCR_DBL_Pos) ///< DBL[4:0] bits (DMA Burst Length)
  533. #define TIM_DCR_DBL_0 (0x01U << TIM_DCR_DBL_Pos) ///< Bit 0
  534. #define TIM_DCR_DBL_1 (0x02U << TIM_DCR_DBL_Pos) ///< Bit 1
  535. #define TIM_DCR_DBL_2 (0x04U << TIM_DCR_DBL_Pos) ///< Bit 2
  536. #define TIM_DCR_DBL_3 (0x08U << TIM_DCR_DBL_Pos) ///< Bit 3
  537. #define TIM_DCR_DBL_4 (0x10U << TIM_DCR_DBL_Pos) ///< Bit 4
  538. ////////////////////////////////////////////////////////////////////////////////
  539. /// @brief TIM_DMAR Register Bit Definition
  540. ////////////////////////////////////////////////////////////////////////////////
  541. #define TIM_DMAR_DMAB (0xFFFFU) ///< DMA register for burst accesses
  542. ////////////////////////////////////////////////////////////////////////////////
  543. /// @brief TIM_CCMR3 Register Bit Definition
  544. ////////////////////////////////////////////////////////////////////////////////
  545. #define TIM_CCMR3_OC5FEN_Pos (2)
  546. #define TIM_CCMR3_OC5FEN (0x01U << TIM_CCMR3_OC5FEN_Pos) ///< Output Compare 5 Fast enable
  547. #define TIM_CCMR3_OC5PEN_Pos (3)
  548. #define TIM_CCMR3_OC5PEN (0x01U << TIM_CCMR3_OC5PEN_Pos) ///< Output Compare 5 Preload enable
  549. #define TIM_CCMR3_OC5M_Pos (4)
  550. #define TIM_CCMR3_OC5M (0x07U << TIM_CCMR3_OC5M_Pos) ///< OC5M[2:0] bits (Output Compare 5 Mode)
  551. #define TIM_CCMR3_OC5CEN_Pos (7)
  552. #define TIM_CCMR3_OC5CEN (0x01U << TIM_CCMR3_OC5CEN_Pos) ///< Output Compare 5 Clear Enable
  553. ////////////////////////////////////////////////////////////////////////////////
  554. /// @brief TIM_CCR5 Register Bit Definition
  555. ////////////////////////////////////////////////////////////////////////////////
  556. #define TIM_CCR5_CCR5 (0xFFFF) ///< Capture/Compare 5 Value
  557. ////////////////////////////////////////////////////////////////////////////////
  558. /// @brief TIM_PDER Register Bit Definition
  559. ////////////////////////////////////////////////////////////////////////////////
  560. #define TIM_PDER_CCDREPE_Pos (0)
  561. #define TIM_PDER_CCDREPE (0x01U << TIM_PDER_CCDREPE_Pos) ///< DMA request flow enable
  562. #define TIM_PDER_CCR1SHIFTEN_Pos (1)
  563. #define TIM_PDER_CCR1SHIFTEN (0x01U << TIM_PDER_CCR1SHIFTEN_Pos) ///< CCR1 pwm shift enable
  564. #define TIM_PDER_CCR2SHIFTEN_Pos (2)
  565. #define TIM_PDER_CCR2SHIFTEN (0x01U << TIM_PDER_CCR2SHIFTEN_Pos) ///< CCR2 pwm shift enable
  566. #define TIM_PDER_CCR3SHIFTEN_Pos (3)
  567. #define TIM_PDER_CCR3SHIFTEN (0x01U << TIM_PDER_CCR3SHIFTEN_Pos) ///< CCR3 pwm shift enable
  568. #define TIM_PDER_CCR4SHIFTEN_Pos (4)
  569. #define TIM_PDER_CCR4SHIFTEN (0x01U << TIM_PDER_CCR4SHIFTEN_Pos) ///< CCR4 pwm shift enable
  570. #define TIM_PDER_CCR5SHIFTEN_Pos (5)
  571. #define TIM_PDER_CCR5SHIFTEN (0x01U << TIM_PDER_CCR5SHIFTEN_Pos) ///< CCR5 pwm shift enable
  572. ////////////////////////////////////////////////////////////////////////////////
  573. /// @brief TIM_CCR1FALL Register Bit Definition
  574. ////////////////////////////////////////////////////////////////////////////////
  575. #define TIM_CCR1FALL_CCR1FALL (0xFFFFU) ///< Capture/compare value for ch1 when counting down in PWM center-aligned mode
  576. ////////////////////////////////////////////////////////////////////////////////
  577. /// @brief TIM_CCR2FALL Register Bit Definition
  578. ////////////////////////////////////////////////////////////////////////////////
  579. #define TIM_CCR2FALL_CCR2FALL (0xFFFFU) ///< Capture/compare value for ch2 when counting down in PWM center-aligned mode
  580. ////////////////////////////////////////////////////////////////////////////////
  581. /// @brief TIM_CCR3FALL Register Bit Definition
  582. ////////////////////////////////////////////////////////////////////////////////
  583. #define TIM_CCR3FALL_CCR3FALL (0xFFFFU) ///< Capture/compare value for ch3 when counting down in PWM center-aligned mode
  584. ////////////////////////////////////////////////////////////////////////////////
  585. /// @brief TIM_CCR4FALL Register Bit Definition
  586. ////////////////////////////////////////////////////////////////////////////////
  587. #define TIM_CCR4FALL_CCR4FALL (0xFFFFU) ///< Capture/compare value for ch4 when counting down in PWM center-aligned mode
  588. ////////////////////////////////////////////////////////////////////////////////
  589. /// @brief TIM_CCR5FALL Register Bit Definition
  590. ////////////////////////////////////////////////////////////////////////////////
  591. #define TIM_CCR5FALL_CCR5FALL (0xFFFFU) ///< Capture/compare value for ch5 when counting down in PWM center-aligned mode
  592. /// @}
  593. /// @}
  594. /// @}
  595. ////////////////////////////////////////////////////////////////////////////////
  596. #endif
  597. ////////////////////////////////////////////////////////////////////////////////