HAL_tim.h 40 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036
  1. /**
  2. ******************************************************************************
  3. * @file HAL_tim.h
  4. * @author AE Team
  5. * @version V1.0.0
  6. * @date 28/7/2017
  7. * @brief This file contains all the functions prototypes for the TIM firmware
  8. * library.
  9. ******************************************************************************
  10. * @copy
  11. *
  12. * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  13. * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
  14. * TIME. AS A RESULT, MindMotion SHALL NOT BE HELD LIABLE FOR ANY
  15. * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
  16. * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
  17. * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  18. *
  19. * <h2><center>&copy; COPYRIGHT 2017 MindMotion</center></h2>
  20. */
  21. /* Define to prevent recursive inclusion -------------------------------------*/
  22. #ifndef __HAL_TIM_H
  23. #define __HAL_TIM_H
  24. /* Includes ------------------------------------------------------------------*/
  25. #include "HAL_device.h"
  26. /** @addtogroup StdPeriph_Driver
  27. * @{
  28. */
  29. /** @addtogroup TIM
  30. * @{
  31. */
  32. /** @defgroup TIM_Exported_Types
  33. * @{
  34. */
  35. /**
  36. * @brief TIM Time Base Init structure definition
  37. */
  38. typedef struct
  39. {
  40. uint16_t TIM_Prescaler;
  41. uint16_t TIM_CounterMode;
  42. uint16_t TIM_Period;
  43. uint16_t TIM_ClockDivision;
  44. uint8_t TIM_RepetitionCounter;
  45. } TIM_TimeBaseInitTypeDef;
  46. /**
  47. * @brief TIM Output Compare Init structure definition
  48. */
  49. typedef struct
  50. {
  51. uint16_t TIM_OCMode;
  52. uint16_t TIM_OutputState;
  53. uint16_t TIM_OutputNState;
  54. uint16_t TIM_Pulse;
  55. uint16_t TIM_OCPolarity;
  56. uint16_t TIM_OCNPolarity;
  57. uint16_t TIM_OCIdleState;
  58. uint16_t TIM_OCNIdleState;
  59. } TIM_OCInitTypeDef;
  60. /**
  61. * @brief TIM Input Capture Init structure definition
  62. */
  63. typedef struct
  64. {
  65. uint16_t TIM_Channel;
  66. uint16_t TIM_ICPolarity;
  67. uint16_t TIM_ICSelection;
  68. uint16_t TIM_ICPrescaler;
  69. uint16_t TIM_ICFilter;
  70. } TIM_ICInitTypeDef;
  71. /**
  72. * @brief BDTR structure definition
  73. */
  74. typedef struct
  75. {
  76. uint16_t TIM_OSSRState;
  77. uint16_t TIM_OSSIState;
  78. uint16_t TIM_LOCKLevel;
  79. uint16_t TIM_DeadTime;
  80. uint16_t TIM_Break;
  81. uint16_t TIM_BreakPolarity;
  82. uint16_t TIM_AutomaticOutput;
  83. } TIM_BDTRInitTypeDef;
  84. /** @defgroup TIM_Exported_constants
  85. * @{
  86. */
  87. #define IS_TIM_ALL_PERIPH(PERIPH) (((*(uint32_t*)&(PERIPH)) == TIM1_BASE) || \
  88. ((*(uint32_t*)&(PERIPH)) == TIM2_BASE) || \
  89. ((*(uint32_t*)&(PERIPH)) == TIM3_BASE) || \
  90. ((*(uint32_t*)&(PERIPH)) == TIM4_BASE))
  91. #define IS_TIM_18_PERIPH(PERIPH) (((*(uint32_t*)&(PERIPH)) == TIM1_BASE))
  92. #define IS_TIM_123458_PERIPH(PERIPH) (((*(uint32_t*)&(PERIPH)) == TIM1_BASE) || \
  93. ((*(uint32_t*)&(PERIPH)) == TIM2_BASE) || \
  94. ((*(uint32_t*)&(PERIPH)) == TIM3_BASE) || \
  95. ((*(uint32_t*)&(PERIPH)) == TIM4_BASE))
  96. /**
  97. * @}
  98. */
  99. /** @defgroup TIM_Output_Compare_and_PWM_modes
  100. * @{
  101. */
  102. #define TIM_OCMode_Timing ((uint16_t)0x0000)
  103. #define TIM_OCMode_Active ((uint16_t)0x0010)
  104. #define TIM_OCMode_Inactive ((uint16_t)0x0020)
  105. #define TIM_OCMode_Toggle ((uint16_t)0x0030)
  106. #define TIM_OCMode_PWM1 ((uint16_t)0x0060)
  107. #define TIM_OCMode_PWM2 ((uint16_t)0x0070)
  108. #define IS_TIM_OC_MODE(MODE) (((MODE) == TIM_OCMode_Timing) || \
  109. ((MODE) == TIM_OCMode_Active) || \
  110. ((MODE) == TIM_OCMode_Inactive) || \
  111. ((MODE) == TIM_OCMode_Toggle)|| \
  112. ((MODE) == TIM_OCMode_PWM1) || \
  113. ((MODE) == TIM_OCMode_PWM2))
  114. #define IS_TIM_OCM(MODE) (((MODE) == TIM_OCMode_Timing) || \
  115. ((MODE) == TIM_OCMode_Active) || \
  116. ((MODE) == TIM_OCMode_Inactive) || \
  117. ((MODE) == TIM_OCMode_Toggle)|| \
  118. ((MODE) == TIM_OCMode_PWM1) || \
  119. ((MODE) == TIM_OCMode_PWM2) || \
  120. ((MODE) == TIM_ForcedAction_Active) || \
  121. ((MODE) == TIM_ForcedAction_InActive))
  122. /**
  123. * @}
  124. */
  125. /** @defgroup TIM_One_Pulse_Mode
  126. * @{
  127. */
  128. #define TIM_OPMode_Single ((uint16_t)0x0008)
  129. #define TIM_OPMode_Repetitive ((uint16_t)0x0000)
  130. #define IS_TIM_OPM_MODE(MODE) (((MODE) == TIM_OPMode_Single) || \
  131. ((MODE) == TIM_OPMode_Repetitive))
  132. /**
  133. * @}
  134. */
  135. /** @defgroup TIM_Channel
  136. * @{
  137. */
  138. #define TIM_Channel_1 ((uint16_t)0x0000)
  139. #define TIM_Channel_2 ((uint16_t)0x0004)
  140. #define TIM_Channel_3 ((uint16_t)0x0008)
  141. #define TIM_Channel_4 ((uint16_t)0x000C)
  142. #define IS_TIM_CHANNEL(CHANNEL) (((CHANNEL) == TIM_Channel_1) || \
  143. ((CHANNEL) == TIM_Channel_2) || \
  144. ((CHANNEL) == TIM_Channel_3) || \
  145. ((CHANNEL) == TIM_Channel_4))
  146. #define IS_TIM_PWMI_CHANNEL(CHANNEL) (((CHANNEL) == TIM_Channel_1) || \
  147. ((CHANNEL) == TIM_Channel_2))
  148. #define IS_TIM_COMPLEMENTARY_CHANNEL(CHANNEL) (((CHANNEL) == TIM_Channel_1) || \
  149. ((CHANNEL) == TIM_Channel_2) || \
  150. ((CHANNEL) == TIM_Channel_3))
  151. /**
  152. * @}
  153. */
  154. /** @defgroup TIM_Clock_Division_CKD
  155. * @{
  156. */
  157. #define TIM_CKD_DIV1 ((uint16_t)0x0000)
  158. #define TIM_CKD_DIV2 ((uint16_t)0x0100)
  159. #define TIM_CKD_DIV4 ((uint16_t)0x0200)
  160. #define IS_TIM_CKD_DIV(DIV) (((DIV) == TIM_CKD_DIV1) || \
  161. ((DIV) == TIM_CKD_DIV2) || \
  162. ((DIV) == TIM_CKD_DIV4))
  163. /**
  164. * @}
  165. */
  166. /** @defgroup TIM_Counter_Mode
  167. * @{
  168. */
  169. #define TIM_CounterMode_Up ((uint16_t)0x0000)
  170. #define TIM_CounterMode_Down ((uint16_t)0x0010)
  171. #define TIM_CounterMode_CenterAligned1 ((uint16_t)0x0020)
  172. #define TIM_CounterMode_CenterAligned2 ((uint16_t)0x0040)
  173. #define TIM_CounterMode_CenterAligned3 ((uint16_t)0x0060)
  174. #define IS_TIM_COUNTER_MODE(MODE) (((MODE) == TIM_CounterMode_Up) || \
  175. ((MODE) == TIM_CounterMode_Down) || \
  176. ((MODE) == TIM_CounterMode_CenterAligned1) || \
  177. ((MODE) == TIM_CounterMode_CenterAligned2) || \
  178. ((MODE) == TIM_CounterMode_CenterAligned3))
  179. /**
  180. * @}
  181. */
  182. /** @defgroup TIM_Output_Compare_Polarity
  183. * @{
  184. */
  185. #define TIM_OCPolarity_High ((uint16_t)0x0000)
  186. #define TIM_OCPolarity_Low ((uint16_t)0x0002)
  187. #define IS_TIM_OC_POLARITY(POLARITY) (((POLARITY) == TIM_OCPolarity_High) || \
  188. ((POLARITY) == TIM_OCPolarity_Low))
  189. /**
  190. * @}
  191. */
  192. /** @defgroup TIM_Output_Compare_N_Polarity
  193. * @{
  194. */
  195. #define TIM_OCNPolarity_High ((uint16_t)0x0000)
  196. #define TIM_OCNPolarity_Low ((uint16_t)0x0008)
  197. #define IS_TIM_OCN_POLARITY(POLARITY) (((POLARITY) == TIM_OCNPolarity_High) || \
  198. ((POLARITY) == TIM_OCNPolarity_Low))
  199. /**
  200. * @}
  201. */
  202. /** @defgroup TIM_Output_Compare_states
  203. * @{
  204. */
  205. #define TIM_OutputState_Disable ((uint16_t)0x0000)
  206. #define TIM_OutputState_Enable ((uint16_t)0x0001)
  207. #define IS_TIM_OUTPUT_STATE(STATE) (((STATE) == TIM_OutputState_Disable) || \
  208. ((STATE) == TIM_OutputState_Enable))
  209. /**
  210. * @}
  211. */
  212. /** @defgroup TIM_Output_Compare_N_States
  213. * @{
  214. */
  215. #define TIM_OutputNState_Disable ((uint16_t)0x0000)
  216. #define TIM_OutputNState_Enable ((uint16_t)0x0004)
  217. #define IS_TIM_OUTPUTN_STATE(STATE) (((STATE) == TIM_OutputNState_Disable) || \
  218. ((STATE) == TIM_OutputNState_Enable))
  219. /**
  220. * @}
  221. */
  222. /** @defgroup TIM_Capture_Compare_States
  223. * @{
  224. */
  225. #define TIM_CCx_Enable ((uint16_t)0x0001)
  226. #define TIM_CCx_Disable ((uint16_t)0x0000)
  227. #define IS_TIM_CCX(CCX) (((CCX) == TIM_CCx_Enable) || \
  228. ((CCX) == TIM_CCx_Disable))
  229. /**
  230. * @}
  231. */
  232. /** @defgroup TIM_Capture_Compare_N_States
  233. * @{
  234. */
  235. #define TIM_CCxN_Enable ((uint16_t)0x0004)
  236. #define TIM_CCxN_Disable ((uint16_t)0x0000)
  237. #define IS_TIM_CCXN(CCXN) (((CCXN) == TIM_CCxN_Enable) || \
  238. ((CCXN) == TIM_CCxN_Disable))
  239. /**
  240. * @}
  241. */
  242. /** @defgroup Break_Input_enable_disable
  243. * @{
  244. */
  245. #define TIM_Break_Enable ((uint16_t)0x1000)
  246. #define TIM_Break_Disable ((uint16_t)0x0000)
  247. #define IS_TIM_BREAK_STATE(STATE) (((STATE) == TIM_Break_Enable) || \
  248. ((STATE) == TIM_Break_Disable))
  249. /**
  250. * @}
  251. */
  252. /** @defgroup Break_Polarity
  253. * @{
  254. */
  255. #define TIM_BreakPolarity_Low ((uint16_t)0x0000)
  256. #define TIM_BreakPolarity_High ((uint16_t)0x2000)
  257. #define IS_TIM_BREAK_POLARITY(POLARITY) (((POLARITY) == TIM_BreakPolarity_Low) || \
  258. ((POLARITY) == TIM_BreakPolarity_High))
  259. /**
  260. * @}
  261. */
  262. /** @defgroup TIM_AOE_Bit_Set_Reset
  263. * @{
  264. */
  265. #define TIM_AutomaticOutput_Enable ((uint16_t)0x4000)
  266. #define TIM_AutomaticOutput_Disable ((uint16_t)0x0000)
  267. #define IS_TIM_AUTOMATIC_OUTPUT_STATE(STATE) (((STATE) == TIM_AutomaticOutput_Enable) || \
  268. ((STATE) == TIM_AutomaticOutput_Disable))
  269. /**
  270. * @}
  271. */
  272. /** @defgroup Lock_levels
  273. * @{
  274. */
  275. #define TIM_LOCKLevel_OFF ((uint16_t)0x0000)
  276. #define TIM_LOCKLevel_1 ((uint16_t)0x0100)
  277. #define TIM_LOCKLevel_2 ((uint16_t)0x0200)
  278. #define TIM_LOCKLevel_3 ((uint16_t)0x0300)
  279. #define IS_TIM_LOCK_LEVEL(LEVEL) (((LEVEL) == TIM_LOCKLevel_OFF) || \
  280. ((LEVEL) == TIM_LOCKLevel_1) || \
  281. ((LEVEL) == TIM_LOCKLevel_2) || \
  282. ((LEVEL) == TIM_LOCKLevel_3))
  283. /**
  284. * @}
  285. */
  286. /** @defgroup OSSI:_Off-State_Selection_for_Idle_mode_states
  287. * @{
  288. */
  289. #define TIM_OSSIState_Enable ((uint16_t)0x0400)
  290. #define TIM_OSSIState_Disable ((uint16_t)0x0000)
  291. #define IS_TIM_OSSI_STATE(STATE) (((STATE) == TIM_OSSIState_Enable) || \
  292. ((STATE) == TIM_OSSIState_Disable))
  293. /**
  294. * @}
  295. */
  296. /** @defgroup OSSR:_Off-State_Selection_for_Run_mode_states
  297. * @{
  298. */
  299. #define TIM_OSSRState_Enable ((uint16_t)0x0800)
  300. #define TIM_OSSRState_Disable ((uint16_t)0x0000)
  301. #define IS_TIM_OSSR_STATE(STATE) (((STATE) == TIM_OSSRState_Enable) || \
  302. ((STATE) == TIM_OSSRState_Disable))
  303. /**
  304. * @}
  305. */
  306. /** @defgroup TIM_Output_Compare_Idle_State
  307. * @{
  308. */
  309. #define TIM_OCIdleState_Set ((uint16_t)0x0100)
  310. #define TIM_OCIdleState_Reset ((uint16_t)0x0000)
  311. #define IS_TIM_OCIDLE_STATE(STATE) (((STATE) == TIM_OCIdleState_Set) || \
  312. ((STATE) == TIM_OCIdleState_Reset))
  313. /**
  314. * @}
  315. */
  316. /** @defgroup TIM_Output_Compare_N_Idle_State
  317. * @{
  318. */
  319. #define TIM_OCNIdleState_Set ((uint16_t)0x0200)
  320. #define TIM_OCNIdleState_Reset ((uint16_t)0x0000)
  321. #define IS_TIM_OCNIDLE_STATE(STATE) (((STATE) == TIM_OCNIdleState_Set) || \
  322. ((STATE) == TIM_OCNIdleState_Reset))
  323. /**
  324. * @}
  325. */
  326. /** @defgroup TIM_Input_Capture_Polarity
  327. * @{
  328. */
  329. #define TIM_ICPolarity_Rising ((uint16_t)0x0000)
  330. #define TIM_ICPolarity_Falling ((uint16_t)0x0002)
  331. #define IS_TIM_IC_POLARITY(POLARITY) (((POLARITY) == TIM_ICPolarity_Rising) || \
  332. ((POLARITY) == TIM_ICPolarity_Falling))
  333. /**
  334. * @}
  335. */
  336. /** @defgroup TIM_Input_Capture_Selection
  337. * @{
  338. */
  339. #define TIM_ICSelection_DirectTI ((uint16_t)0x0001)
  340. #define TIM_ICSelection_IndirectTI ((uint16_t)0x0002)
  341. #define TIM_ICSelection_TRC ((uint16_t)0x0003)
  342. #define IS_TIM_IC_SELECTION(SELECTION) (((SELECTION) == TIM_ICSelection_DirectTI) || \
  343. ((SELECTION) == TIM_ICSelection_IndirectTI) || \
  344. ((SELECTION) == TIM_ICSelection_TRC))
  345. /**
  346. * @}
  347. */
  348. /** @defgroup TIM_Input_Capture_Prescaler
  349. * @{
  350. */
  351. #define TIM_ICPSC_DIV1 ((uint16_t)0x0000)
  352. #define TIM_ICPSC_DIV2 ((uint16_t)0x0004)
  353. #define TIM_ICPSC_DIV4 ((uint16_t)0x0008)
  354. #define TIM_ICPSC_DIV8 ((uint16_t)0x000C)
  355. #define IS_TIM_IC_PRESCALER(PRESCALER) (((PRESCALER) == TIM_ICPSC_DIV1) || \
  356. ((PRESCALER) == TIM_ICPSC_DIV2) || \
  357. ((PRESCALER) == TIM_ICPSC_DIV4) || \
  358. ((PRESCALER) == TIM_ICPSC_DIV8))
  359. /**
  360. * @}
  361. */
  362. /** @defgroup TIM_interrupt_sources
  363. * @{
  364. */
  365. #define TIM_IT_Update ((uint16_t)0x0001)
  366. #define TIM_IT_CC1 ((uint16_t)0x0002)
  367. #define TIM_IT_CC2 ((uint16_t)0x0004)
  368. #define TIM_IT_CC3 ((uint16_t)0x0008)
  369. #define TIM_IT_CC4 ((uint16_t)0x0010)
  370. #define TIM_IT_COM ((uint16_t)0x0020)
  371. #define TIM_IT_Trigger ((uint16_t)0x0040)
  372. #define TIM_IT_Break ((uint16_t)0x0080)
  373. #define IS_TIM_IT(IT) ((((IT) & (uint16_t)0xFF00) == 0x0000) && ((IT) != 0x0000))
  374. #define IS_TIM_PERIPH_IT(PERIPH, TIM_IT) ((((((*(uint32_t*)&(PERIPH)) == TIM2_BASE) || (((*(uint32_t*)&(PERIPH)) == TIM3_BASE))||\
  375. (((*(uint32_t*)&(PERIPH)) == TIM4_BASE)) || (((*(uint32_t*)&(PERIPH)) == TIM5_BASE))))&& \
  376. (((TIM_IT) & (uint16_t)0xFFA0) == 0x0000) && ((TIM_IT) != 0x0000)) ||\
  377. (((((*(uint32_t*)&(PERIPH)) == TIM1_BASE) || (((*(uint32_t*)&(PERIPH)) == TIM8_BASE))))&& \
  378. (((TIM_IT) & (uint16_t)0xFF00) == 0x0000) && ((TIM_IT) != 0x0000)) ||\
  379. (((((*(uint32_t*)&(PERIPH)) == TIM6_BASE) || (((*(uint32_t*)&(PERIPH)) == TIM7_BASE))))&& \
  380. (((TIM_IT) & (uint16_t)0xFFFE) == 0x0000) && ((TIM_IT) != 0x0000)))
  381. #define IS_TIM_GET_IT(IT) (((IT) == TIM_IT_Update) || \
  382. ((IT) == TIM_IT_CC1) || \
  383. ((IT) == TIM_IT_CC2) || \
  384. ((IT) == TIM_IT_CC3) || \
  385. ((IT) == TIM_IT_CC4) || \
  386. ((IT) == TIM_IT_COM) || \
  387. ((IT) == TIM_IT_Trigger) || \
  388. ((IT) == TIM_IT_Break))
  389. /**
  390. * @}
  391. */
  392. /** @defgroup TIM_DMA_Base_address
  393. * @{
  394. */
  395. #define TIM_DMABase_CR1 ((uint16_t)0x0000)
  396. #define TIM_DMABase_CR2 ((uint16_t)0x0001)
  397. #define TIM_DMABase_SMCR ((uint16_t)0x0002)
  398. #define TIM_DMABase_DIER ((uint16_t)0x0003)
  399. #define TIM_DMABase_SR ((uint16_t)0x0004)
  400. #define TIM_DMABase_EGR ((uint16_t)0x0005)
  401. #define TIM_DMABase_CCMR1 ((uint16_t)0x0006)
  402. #define TIM_DMABase_CCMR2 ((uint16_t)0x0007)
  403. #define TIM_DMABase_CCER ((uint16_t)0x0008)
  404. #define TIM_DMABase_CNT ((uint16_t)0x0009)
  405. #define TIM_DMABase_PSC ((uint16_t)0x000A)
  406. #define TIM_DMABase_ARR ((uint16_t)0x000B)
  407. #define TIM_DMABase_RCR ((uint16_t)0x000C)
  408. #define TIM_DMABase_CCR1 ((uint16_t)0x000D)
  409. #define TIM_DMABase_CCR2 ((uint16_t)0x000E)
  410. #define TIM_DMABase_CCR3 ((uint16_t)0x000F)
  411. #define TIM_DMABase_CCR4 ((uint16_t)0x0010)
  412. #define TIM_DMABase_BDTR ((uint16_t)0x0011)
  413. #define TIM_DMABase_DCR ((uint16_t)0x0012)
  414. #define IS_TIM_DMA_BASE(BASE) (((BASE) == TIM_DMABase_CR1) || \
  415. ((BASE) == TIM_DMABase_CR2) || \
  416. ((BASE) == TIM_DMABase_SMCR) || \
  417. ((BASE) == TIM_DMABase_DIER) || \
  418. ((BASE) == TIM_DMABase_SR) || \
  419. ((BASE) == TIM_DMABase_EGR) || \
  420. ((BASE) == TIM_DMABase_CCMR1) || \
  421. ((BASE) == TIM_DMABase_CCMR2) || \
  422. ((BASE) == TIM_DMABase_CCER) || \
  423. ((BASE) == TIM_DMABase_CNT) || \
  424. ((BASE) == TIM_DMABase_PSC) || \
  425. ((BASE) == TIM_DMABase_ARR) || \
  426. ((BASE) == TIM_DMABase_RCR) || \
  427. ((BASE) == TIM_DMABase_CCR1) || \
  428. ((BASE) == TIM_DMABase_CCR2) || \
  429. ((BASE) == TIM_DMABase_CCR3) || \
  430. ((BASE) == TIM_DMABase_CCR4) || \
  431. ((BASE) == TIM_DMABase_BDTR) || \
  432. ((BASE) == TIM_DMABase_DCR))
  433. /**
  434. * @}
  435. */
  436. /** @defgroup TIM_DMA_Burst_Length
  437. * @{
  438. */
  439. #define TIM_DMABurstLength_1Byte ((uint16_t)0x0000)
  440. #define TIM_DMABurstLength_2Bytes ((uint16_t)0x0100)
  441. #define TIM_DMABurstLength_3Bytes ((uint16_t)0x0200)
  442. #define TIM_DMABurstLength_4Bytes ((uint16_t)0x0300)
  443. #define TIM_DMABurstLength_5Bytes ((uint16_t)0x0400)
  444. #define TIM_DMABurstLength_6Bytes ((uint16_t)0x0500)
  445. #define TIM_DMABurstLength_7Bytes ((uint16_t)0x0600)
  446. #define TIM_DMABurstLength_8Bytes ((uint16_t)0x0700)
  447. #define TIM_DMABurstLength_9Bytes ((uint16_t)0x0800)
  448. #define TIM_DMABurstLength_10Bytes ((uint16_t)0x0900)
  449. #define TIM_DMABurstLength_11Bytes ((uint16_t)0x0A00)
  450. #define TIM_DMABurstLength_12Bytes ((uint16_t)0x0B00)
  451. #define TIM_DMABurstLength_13Bytes ((uint16_t)0x0C00)
  452. #define TIM_DMABurstLength_14Bytes ((uint16_t)0x0D00)
  453. #define TIM_DMABurstLength_15Bytes ((uint16_t)0x0E00)
  454. #define TIM_DMABurstLength_16Bytes ((uint16_t)0x0F00)
  455. #define TIM_DMABurstLength_17Bytes ((uint16_t)0x1000)
  456. #define TIM_DMABurstLength_18Bytes ((uint16_t)0x1100)
  457. #define IS_TIM_DMA_LENGTH(LENGTH) (((LENGTH) == TIM_DMABurstLength_1Byte) || \
  458. ((LENGTH) == TIM_DMABurstLength_2Bytes) || \
  459. ((LENGTH) == TIM_DMABurstLength_3Bytes) || \
  460. ((LENGTH) == TIM_DMABurstLength_4Bytes) || \
  461. ((LENGTH) == TIM_DMABurstLength_5Bytes) || \
  462. ((LENGTH) == TIM_DMABurstLength_6Bytes) || \
  463. ((LENGTH) == TIM_DMABurstLength_7Bytes) || \
  464. ((LENGTH) == TIM_DMABurstLength_8Bytes) || \
  465. ((LENGTH) == TIM_DMABurstLength_9Bytes) || \
  466. ((LENGTH) == TIM_DMABurstLength_10Bytes) || \
  467. ((LENGTH) == TIM_DMABurstLength_11Bytes) || \
  468. ((LENGTH) == TIM_DMABurstLength_12Bytes) || \
  469. ((LENGTH) == TIM_DMABurstLength_13Bytes) || \
  470. ((LENGTH) == TIM_DMABurstLength_14Bytes) || \
  471. ((LENGTH) == TIM_DMABurstLength_15Bytes) || \
  472. ((LENGTH) == TIM_DMABurstLength_16Bytes) || \
  473. ((LENGTH) == TIM_DMABurstLength_17Bytes) || \
  474. ((LENGTH) == TIM_DMABurstLength_18Bytes))
  475. /**
  476. * @}
  477. */
  478. /** @defgroup TIM_DMA_sources
  479. * @{
  480. */
  481. #define TIM_DMA_Update ((uint16_t)0x0100)
  482. #define TIM_DMA_CC1 ((uint16_t)0x0200)
  483. #define TIM_DMA_CC2 ((uint16_t)0x0400)
  484. #define TIM_DMA_CC3 ((uint16_t)0x0800)
  485. #define TIM_DMA_CC4 ((uint16_t)0x1000)
  486. #define TIM_DMA_COM ((uint16_t)0x2000)
  487. #define TIM_DMA_Trigger ((uint16_t)0x4000)
  488. #define IS_TIM_DMA_SOURCE(SOURCE) ((((SOURCE) & (uint16_t)0x80FF) == 0x0000) && ((SOURCE) != 0x0000))
  489. #define IS_TIM_PERIPH_DMA(PERIPH, SOURCE) ((((((*(uint32_t*)&(PERIPH)) == TIM2_BASE) || (((*(uint32_t*)&(PERIPH)) == TIM3_BASE))||\
  490. (((*(uint32_t*)&(PERIPH)) == TIM4_BASE)) || (((*(uint32_t*)&(PERIPH)) == TIM5_BASE))))&& \
  491. (((SOURCE) & (uint16_t)0xA0FF) == 0x0000) && ((SOURCE) != 0x0000)) ||\
  492. (((((*(uint32_t*)&(PERIPH)) == TIM1_BASE) || (((*(uint32_t*)&(PERIPH)) == TIM8_BASE))))&& \
  493. (((SOURCE) & (uint16_t)0x80FF) == 0x0000) && ((SOURCE) != 0x0000)) ||\
  494. (((((*(uint32_t*)&(PERIPH)) == TIM6_BASE) || (((*(uint32_t*)&(PERIPH)) == TIM7_BASE))))&& \
  495. (((SOURCE) & (uint16_t)0xFEFF) == 0x0000) && ((SOURCE) != 0x0000)))
  496. /**
  497. * @}
  498. */
  499. /** @defgroup TIM_External_Trigger_Prescaler
  500. * @{
  501. */
  502. #define TIM_ExtTRGPSC_OFF ((uint16_t)0x0000)
  503. #define TIM_ExtTRGPSC_DIV2 ((uint16_t)0x1000)
  504. #define TIM_ExtTRGPSC_DIV4 ((uint16_t)0x2000)
  505. #define TIM_ExtTRGPSC_DIV8 ((uint16_t)0x3000)
  506. #define IS_TIM_EXT_PRESCALER(PRESCALER) (((PRESCALER) == TIM_ExtTRGPSC_OFF) || \
  507. ((PRESCALER) == TIM_ExtTRGPSC_DIV2) || \
  508. ((PRESCALER) == TIM_ExtTRGPSC_DIV4) || \
  509. ((PRESCALER) == TIM_ExtTRGPSC_DIV8))
  510. /**
  511. * @}
  512. */
  513. /** @defgroup TIM_Internal_Trigger_Selection
  514. * @{
  515. */
  516. #define TIM_TS_ITR0 ((uint16_t)0x0000)
  517. #define TIM_TS_ITR1 ((uint16_t)0x0010)
  518. #define TIM_TS_ITR2 ((uint16_t)0x0020)
  519. #define TIM_TS_ITR3 ((uint16_t)0x0030)
  520. #define TIM_TS_TI1F_ED ((uint16_t)0x0040)
  521. #define TIM_TS_TI1FP1 ((uint16_t)0x0050)
  522. #define TIM_TS_TI2FP2 ((uint16_t)0x0060)
  523. #define TIM_TS_ETRF ((uint16_t)0x0070)
  524. #define IS_TIM_TRIGGER_SELECTION(SELECTION) (((SELECTION) == TIM_TS_ITR0) || \
  525. ((SELECTION) == TIM_TS_ITR1) || \
  526. ((SELECTION) == TIM_TS_ITR2) || \
  527. ((SELECTION) == TIM_TS_ITR3) || \
  528. ((SELECTION) == TIM_TS_TI1F_ED) || \
  529. ((SELECTION) == TIM_TS_TI1FP1) || \
  530. ((SELECTION) == TIM_TS_TI2FP2) || \
  531. ((SELECTION) == TIM_TS_ETRF))
  532. #define IS_TIM_INTERNAL_TRIGGER_SELECTION(SELECTION) (((SELECTION) == TIM_TS_ITR0) || \
  533. ((SELECTION) == TIM_TS_ITR1) || \
  534. ((SELECTION) == TIM_TS_ITR2) || \
  535. ((SELECTION) == TIM_TS_ITR3))
  536. /**
  537. * @}
  538. */
  539. /** @defgroup TIM_TIx_External_Clock_Source
  540. * @{
  541. */
  542. #define TIM_TIxExternalCLK1Source_TI1 ((uint16_t)0x0050)
  543. #define TIM_TIxExternalCLK1Source_TI2 ((uint16_t)0x0060)
  544. #define TIM_TIxExternalCLK1Source_TI1ED ((uint16_t)0x0040)
  545. #define IS_TIM_TIXCLK_SOURCE(SOURCE) (((SOURCE) == TIM_TIxExternalCLK1Source_TI1) || \
  546. ((SOURCE) == TIM_TIxExternalCLK1Source_TI2) || \
  547. ((SOURCE) == TIM_TIxExternalCLK1Source_TI1ED))
  548. /**
  549. * @}
  550. */
  551. /** @defgroup TIM_External_Trigger_Polarity
  552. * @{
  553. */
  554. #define TIM_ExtTRGPolarity_Inverted ((uint16_t)0x8000)
  555. #define TIM_ExtTRGPolarity_NonInverted ((uint16_t)0x0000)
  556. #define IS_TIM_EXT_POLARITY(POLARITY) (((POLARITY) == TIM_ExtTRGPolarity_Inverted) || \
  557. ((POLARITY) == TIM_ExtTRGPolarity_NonInverted))
  558. /**
  559. * @}
  560. */
  561. /** @defgroup TIM_Prescaler_Reload_Mode
  562. * @{
  563. */
  564. #define TIM_PSCReloadMode_Update ((uint16_t)0x0000)
  565. #define TIM_PSCReloadMode_Immediate ((uint16_t)0x0001)
  566. #define IS_TIM_PRESCALER_RELOAD(RELOAD) (((RELOAD) == TIM_PSCReloadMode_Update) || \
  567. ((RELOAD) == TIM_PSCReloadMode_Immediate))
  568. /**
  569. * @}
  570. */
  571. /** @defgroup TIM_Forced_Action
  572. * @{
  573. */
  574. #define TIM_ForcedAction_Active ((uint16_t)0x0050)
  575. #define TIM_ForcedAction_InActive ((uint16_t)0x0040)
  576. #define IS_TIM_FORCED_ACTION(ACTION) (((ACTION) == TIM_ForcedAction_Active) || \
  577. ((ACTION) == TIM_ForcedAction_InActive))
  578. /**
  579. * @}
  580. */
  581. /** @defgroup TIM_Encoder_Mode
  582. * @{
  583. */
  584. #define TIM_EncoderMode_TI1 ((uint16_t)0x0001)
  585. #define TIM_EncoderMode_TI2 ((uint16_t)0x0002)
  586. #define TIM_EncoderMode_TI12 ((uint16_t)0x0003)
  587. #define IS_TIM_ENCODER_MODE(MODE) (((MODE) == TIM_EncoderMode_TI1) || \
  588. ((MODE) == TIM_EncoderMode_TI2) || \
  589. ((MODE) == TIM_EncoderMode_TI12))
  590. /**
  591. * @}
  592. */
  593. /** @defgroup TIM_Event_Source
  594. * @{
  595. */
  596. #define TIM_EventSource_Update ((uint16_t)0x0001)
  597. #define TIM_EventSource_CC1 ((uint16_t)0x0002)
  598. #define TIM_EventSource_CC2 ((uint16_t)0x0004)
  599. #define TIM_EventSource_CC3 ((uint16_t)0x0008)
  600. #define TIM_EventSource_CC4 ((uint16_t)0x0010)
  601. #define TIM_EventSource_COM ((uint16_t)0x0020)
  602. #define TIM_EventSource_Trigger ((uint16_t)0x0040)
  603. #define TIM_EventSource_Break ((uint16_t)0x0080)
  604. #define IS_TIM_EVENT_SOURCE(SOURCE) ((((SOURCE) & (uint16_t)0xFF00) == 0x0000) && ((SOURCE) != 0x0000))
  605. #define IS_TIM_PERIPH_EVENT(PERIPH, EVENT) ((((((*(uint32_t*)&(PERIPH)) == TIM2_BASE) || (((*(uint32_t*)&(PERIPH)) == TIM3_BASE))||\
  606. (((*(uint32_t*)&(PERIPH)) == TIM4_BASE)) || (((*(uint32_t*)&(PERIPH)) == TIM5_BASE))))&& \
  607. (((EVENT) & (uint16_t)0xFFA0) == 0x0000) && ((EVENT) != 0x0000)) ||\
  608. (((((*(uint32_t*)&(PERIPH)) == TIM1_BASE) || (((*(uint32_t*)&(PERIPH)) == TIM8_BASE))))&& \
  609. (((EVENT) & (uint16_t)0xFF00) == 0x0000) && ((EVENT) != 0x0000)) ||\
  610. (((((*(uint32_t*)&(PERIPH)) == TIM6_BASE) || (((*(uint32_t*)&(PERIPH)) == TIM7_BASE))))&& \
  611. (((EVENT) & (uint16_t)0xFFFE) == 0x0000) && ((EVENT) != 0x0000)))
  612. /**
  613. * @}
  614. */
  615. /** @defgroup TIM_Update_Source
  616. * @{
  617. */
  618. #define TIM_UpdateSource_Global ((uint16_t)0x0000)
  619. #define TIM_UpdateSource_Regular ((uint16_t)0x0001)
  620. #define IS_TIM_UPDATE_SOURCE(SOURCE) (((SOURCE) == TIM_UpdateSource_Global) || \
  621. ((SOURCE) == TIM_UpdateSource_Regular))
  622. /**
  623. * @}
  624. */
  625. /** @defgroup TIM_Ouput_Compare_Preload_State
  626. * @{
  627. */
  628. #define TIM_OCPreload_Enable ((uint16_t)0x0008)
  629. #define TIM_OCPreload_Disable ((uint16_t)0x0000)
  630. #define IS_TIM_OCPRELOAD_STATE(STATE) (((STATE) == TIM_OCPreload_Enable) || \
  631. ((STATE) == TIM_OCPreload_Disable))
  632. /**
  633. * @}
  634. */
  635. /** @defgroup TIM_Ouput_Compare_Fast_State
  636. * @{
  637. */
  638. #define TIM_OCFast_Enable ((uint16_t)0x0004)
  639. #define TIM_OCFast_Disable ((uint16_t)0x0000)
  640. #define IS_TIM_OCFAST_STATE(STATE) (((STATE) == TIM_OCFast_Enable) || \
  641. ((STATE) == TIM_OCFast_Disable))
  642. /**
  643. * @}
  644. */
  645. /** @defgroup TIM_Ouput_Compare_Clear_State
  646. * @{
  647. */
  648. #define TIM_OCClear_Enable ((uint16_t)0x0080)
  649. #define TIM_OCClear_Disable ((uint16_t)0x0000)
  650. #define IS_TIM_OCCLEAR_STATE(STATE) (((STATE) == TIM_OCClear_Enable) || \
  651. ((STATE) == TIM_OCClear_Disable))
  652. /**
  653. * @}
  654. */
  655. /** @defgroup TIM_Trigger_Output_Source
  656. * @{
  657. */
  658. #define TIM_TRGOSource_Reset ((uint16_t)0x0000)
  659. #define TIM_TRGOSource_Enable ((uint16_t)0x0010)
  660. #define TIM_TRGOSource_Update ((uint16_t)0x0020)
  661. #define TIM_TRGOSource_OC1 ((uint16_t)0x0030)
  662. #define TIM_TRGOSource_OC1Ref ((uint16_t)0x0040)
  663. #define TIM_TRGOSource_OC2Ref ((uint16_t)0x0050)
  664. #define TIM_TRGOSource_OC3Ref ((uint16_t)0x0060)
  665. #define TIM_TRGOSource_OC4Ref ((uint16_t)0x0070)
  666. #define IS_TIM_TRGO_SOURCE(SOURCE) (((SOURCE) == TIM_TRGOSource_Reset) || \
  667. ((SOURCE) == TIM_TRGOSource_Enable) || \
  668. ((SOURCE) == TIM_TRGOSource_Update) || \
  669. ((SOURCE) == TIM_TRGOSource_OC1) || \
  670. ((SOURCE) == TIM_TRGOSource_OC1Ref) || \
  671. ((SOURCE) == TIM_TRGOSource_OC2Ref) || \
  672. ((SOURCE) == TIM_TRGOSource_OC3Ref) || \
  673. ((SOURCE) == TIM_TRGOSource_OC4Ref))
  674. #define IS_TIM_PERIPH_TRGO(PERIPH, TRGO) (((((*(uint32_t*)&(PERIPH)) == TIM2_BASE)||(((*(uint32_t*)&(PERIPH)) == TIM1_BASE))||\
  675. (((*(uint32_t*)&(PERIPH)) == TIM3_BASE))||(((*(uint32_t*)&(PERIPH)) == TIM4_BASE))|| \
  676. (((*(uint32_t*)&(PERIPH)) == TIM6_BASE))||(((*(uint32_t*)&(PERIPH)) == TIM7_BASE))|| \
  677. (((*(uint32_t*)&(PERIPH)) == TIM5_BASE))||(((*(uint32_t*)&(PERIPH)) == TIM8_BASE))) && \
  678. ((TRGO) == TIM_TRGOSource_Reset)) ||\
  679. ((((*(uint32_t*)&(PERIPH)) == TIM2_BASE)||(((*(uint32_t*)&(PERIPH)) == TIM1_BASE))||\
  680. (((*(uint32_t*)&(PERIPH)) == TIM6_BASE))||(((*(uint32_t*)&(PERIPH)) == TIM7_BASE))|| \
  681. (((*(uint32_t*)&(PERIPH)) == TIM3_BASE))||(((*(uint32_t*)&(PERIPH)) == TIM4_BASE))|| \
  682. (((*(uint32_t*)&(PERIPH)) == TIM5_BASE))||(((*(uint32_t*)&(PERIPH)) == TIM8_BASE))) && \
  683. ((TRGO) == TIM_TRGOSource_Enable)) ||\
  684. ((((*(uint32_t*)&(PERIPH)) == TIM2_BASE)||(((*(uint32_t*)&(PERIPH)) == TIM1_BASE))||\
  685. (((*(uint32_t*)&(PERIPH)) == TIM6_BASE))||(((*(uint32_t*)&(PERIPH)) == TIM7_BASE))|| \
  686. (((*(uint32_t*)&(PERIPH)) == TIM3_BASE))||(((*(uint32_t*)&(PERIPH)) == TIM4_BASE))|| \
  687. (((*(uint32_t*)&(PERIPH)) == TIM5_BASE))||(((*(uint32_t*)&(PERIPH)) == TIM8_BASE))) && \
  688. ((TRGO) == TIM_TRGOSource_Update)) ||\
  689. ((((*(uint32_t*)&(PERIPH)) == TIM2_BASE)||(((*(uint32_t*)&(PERIPH)) == TIM1_BASE))||\
  690. (((*(uint32_t*)&(PERIPH)) == TIM3_BASE))||(((*(uint32_t*)&(PERIPH)) == TIM4_BASE))|| \
  691. (((*(uint32_t*)&(PERIPH)) == TIM5_BASE))||(((*(uint32_t*)&(PERIPH)) == TIM8_BASE))) && \
  692. ((TRGO) == TIM_TRGOSource_OC1)) ||\
  693. ((((*(uint32_t*)&(PERIPH)) == TIM2_BASE)||(((*(uint32_t*)&(PERIPH)) == TIM1_BASE))||\
  694. (((*(uint32_t*)&(PERIPH)) == TIM3_BASE))||(((*(uint32_t*)&(PERIPH)) == TIM4_BASE))|| \
  695. (((*(uint32_t*)&(PERIPH)) == TIM5_BASE))||(((*(uint32_t*)&(PERIPH)) == TIM8_BASE))) && \
  696. ((TRGO) == TIM_TRGOSource_OC1Ref)) ||\
  697. ((((*(uint32_t*)&(PERIPH)) == TIM2_BASE)||(((*(uint32_t*)&(PERIPH)) == TIM1_BASE))||\
  698. (((*(uint32_t*)&(PERIPH)) == TIM3_BASE))||(((*(uint32_t*)&(PERIPH)) == TIM4_BASE))|| \
  699. (((*(uint32_t*)&(PERIPH)) == TIM5_BASE))||(((*(uint32_t*)&(PERIPH)) == TIM8_BASE))) && \
  700. ((TRGO) == TIM_TRGOSource_OC2Ref)) ||\
  701. ((((*(uint32_t*)&(PERIPH)) == TIM2_BASE)||(((*(uint32_t*)&(PERIPH)) == TIM1_BASE))||\
  702. (((*(uint32_t*)&(PERIPH)) == TIM3_BASE))||(((*(uint32_t*)&(PERIPH)) == TIM4_BASE))|| \
  703. (((*(uint32_t*)&(PERIPH)) == TIM5_BASE))||(((*(uint32_t*)&(PERIPH)) == TIM8_BASE))) && \
  704. ((TRGO) == TIM_TRGOSource_OC3Ref)) ||\
  705. ((((*(uint32_t*)&(PERIPH)) == TIM2_BASE)||(((*(uint32_t*)&(PERIPH)) == TIM1_BASE))||\
  706. (((*(uint32_t*)&(PERIPH)) == TIM3_BASE))||(((*(uint32_t*)&(PERIPH)) == TIM4_BASE))|| \
  707. (((*(uint32_t*)&(PERIPH)) == TIM5_BASE))||(((*(uint32_t*)&(PERIPH)) == TIM8_BASE))) && \
  708. ((TRGO) == TIM_TRGOSource_OC4Ref)))
  709. /**
  710. * @}
  711. */
  712. /** @defgroup TIM_Slave_Mode
  713. * @{
  714. */
  715. #define TIM_SlaveMode_Reset ((uint16_t)0x0004)
  716. #define TIM_SlaveMode_Gated ((uint16_t)0x0005)
  717. #define TIM_SlaveMode_Trigger ((uint16_t)0x0006)
  718. #define TIM_SlaveMode_External1 ((uint16_t)0x0007)
  719. #define IS_TIM_SLAVE_MODE(MODE) (((MODE) == TIM_SlaveMode_Reset) || \
  720. ((MODE) == TIM_SlaveMode_Gated) || \
  721. ((MODE) == TIM_SlaveMode_Trigger) || \
  722. ((MODE) == TIM_SlaveMode_External1))
  723. /**
  724. * @}
  725. */
  726. /** @defgroup TIM_Master_Slave_Mode
  727. * @{
  728. */
  729. #define TIM_MasterSlaveMode_Enable ((uint16_t)0x0080)
  730. #define TIM_MasterSlaveMode_Disable ((uint16_t)0x0000)
  731. #define IS_TIM_MSM_STATE(STATE) (((STATE) == TIM_MasterSlaveMode_Enable) || \
  732. ((STATE) == TIM_MasterSlaveMode_Disable))
  733. /**
  734. * @}
  735. */
  736. /** @defgroup TIM_Flags
  737. * @{
  738. */
  739. #define TIM_FLAG_Update ((uint16_t)0x0001)
  740. #define TIM_FLAG_CC1 ((uint16_t)0x0002)
  741. #define TIM_FLAG_CC2 ((uint16_t)0x0004)
  742. #define TIM_FLAG_CC3 ((uint16_t)0x0008)
  743. #define TIM_FLAG_CC4 ((uint16_t)0x0010)
  744. #define TIM_FLAG_COM ((uint16_t)0x0020)
  745. #define TIM_FLAG_Trigger ((uint16_t)0x0040)
  746. #define TIM_FLAG_Break ((uint16_t)0x0080)
  747. #define TIM_FLAG_CC1OF ((uint16_t)0x0200)
  748. #define TIM_FLAG_CC2OF ((uint16_t)0x0400)
  749. #define TIM_FLAG_CC3OF ((uint16_t)0x0800)
  750. #define TIM_FLAG_CC4OF ((uint16_t)0x1000)
  751. #define IS_TIM_GET_FLAG(FLAG) (((FLAG) == TIM_FLAG_Update) || \
  752. ((FLAG) == TIM_FLAG_CC1) || \
  753. ((FLAG) == TIM_FLAG_CC2) || \
  754. ((FLAG) == TIM_FLAG_CC3) || \
  755. ((FLAG) == TIM_FLAG_CC4) || \
  756. ((FLAG) == TIM_FLAG_COM) || \
  757. ((FLAG) == TIM_FLAG_Trigger) || \
  758. ((FLAG) == TIM_FLAG_Break) || \
  759. ((FLAG) == TIM_FLAG_CC1OF) || \
  760. ((FLAG) == TIM_FLAG_CC2OF) || \
  761. ((FLAG) == TIM_FLAG_CC3OF) || \
  762. ((FLAG) == TIM_FLAG_CC4OF))
  763. #define IS_TIM_CLEAR_FLAG(PERIPH, TIM_FLAG) ((((((*(uint32_t*)&(PERIPH)) == TIM2_BASE) || (((*(uint32_t*)&(PERIPH)) == TIM3_BASE))||\
  764. (((*(uint32_t*)&(PERIPH)) == TIM4_BASE)) || (((*(uint32_t*)&(PERIPH)) == TIM5_BASE))))&& \
  765. (((TIM_FLAG) & (uint16_t)0xE1A0) == 0x0000) && ((TIM_FLAG) != 0x0000)) ||\
  766. (((((*(uint32_t*)&(PERIPH)) == TIM1_BASE) || (((*(uint32_t*)&(PERIPH)) == TIM8_BASE))))&& \
  767. (((TIM_FLAG) & (uint16_t)0xE100) == 0x0000) && ((TIM_FLAG) != 0x0000)) ||\
  768. (((((*(uint32_t*)&(PERIPH)) == TIM6_BASE) || (((*(uint32_t*)&(PERIPH)) == TIM7_BASE))))&& \
  769. (((TIM_FLAG) & (uint16_t)0xFFFE) == 0x0000) && ((TIM_FLAG) != 0x0000)))
  770. #define IS_TIM_PERIPH_FLAG(PERIPH, TIM_FLAG) (((((*(uint32_t*)&(PERIPH))==TIM2_BASE) || ((*(uint32_t*)&(PERIPH)) == TIM3_BASE) ||\
  771. ((*(uint32_t*)&(PERIPH)) == TIM4_BASE) || ((*(uint32_t*)&(PERIPH))==TIM5_BASE) || \
  772. ((*(uint32_t*)&(PERIPH))==TIM1_BASE) || ((*(uint32_t*)&(PERIPH))==TIM8_BASE)) &&\
  773. (((TIM_FLAG) == TIM_FLAG_CC1) || ((TIM_FLAG) == TIM_FLAG_CC2) ||\
  774. ((TIM_FLAG) == TIM_FLAG_CC3) || ((TIM_FLAG) == TIM_FLAG_CC4) || \
  775. ((TIM_FLAG) == TIM_FLAG_Trigger))) ||\
  776. ((((*(uint32_t*)&(PERIPH))==TIM2_BASE) || ((*(uint32_t*)&(PERIPH)) == TIM3_BASE) || \
  777. ((*(uint32_t*)&(PERIPH)) == TIM4_BASE) || ((*(uint32_t*)&(PERIPH))==TIM5_BASE) ||\
  778. ((*(uint32_t*)&(PERIPH))==TIM1_BASE)|| ((*(uint32_t*)&(PERIPH))==TIM8_BASE) || \
  779. ((*(uint32_t*)&(PERIPH))==TIM7_BASE) || ((*(uint32_t*)&(PERIPH))==TIM6_BASE)) && \
  780. (((TIM_FLAG) == TIM_FLAG_Update))) ||\
  781. ((((*(uint32_t*)&(PERIPH))==TIM1_BASE) || ((*(uint32_t*)&(PERIPH)) == TIM8_BASE)) &&\
  782. (((TIM_FLAG) == TIM_FLAG_COM) || ((TIM_FLAG) == TIM_FLAG_Break))) ||\
  783. ((((*(uint32_t*)&(PERIPH))==TIM2_BASE) || ((*(uint32_t*)&(PERIPH)) == TIM3_BASE) || \
  784. ((*(uint32_t*)&(PERIPH)) == TIM4_BASE) || ((*(uint32_t*)&(PERIPH))==TIM5_BASE) || \
  785. ((*(uint32_t*)&(PERIPH))==TIM1_BASE) || ((*(uint32_t*)&(PERIPH))==TIM8_BASE)) &&\
  786. (((TIM_FLAG) == TIM_FLAG_CC1OF) || ((TIM_FLAG) == TIM_FLAG_CC2OF) ||\
  787. ((TIM_FLAG) == TIM_FLAG_CC3OF) || ((TIM_FLAG) == TIM_FLAG_CC4OF))))
  788. /**
  789. * @}
  790. */
  791. /** @defgroup TIM_Input_Capture_Filer_Value
  792. * @{
  793. */
  794. #define IS_TIM_IC_FILTER(ICFILTER) ((ICFILTER) <= 0xF)
  795. /**
  796. * @}
  797. */
  798. /** @defgroup TIM_External_Trigger_Filter
  799. * @{
  800. */
  801. #define IS_TIM_EXT_FILTER(EXTFILTER) ((EXTFILTER) <= 0xF)
  802. /**
  803. * @}
  804. */
  805. /**
  806. * @}
  807. */
  808. /** @defgroup TIM_Exported_Macros
  809. * @{
  810. */
  811. /**
  812. * @}
  813. */
  814. /** @defgroup TIM_Exported_Functions
  815. * @{
  816. */
  817. void TIM_DeInit(TIM_TypeDef* TIMx);
  818. void TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);
  819. void TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
  820. void TIM_OC2Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
  821. void TIM_OC3Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
  822. void TIM_OC4Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
  823. void TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);
  824. void TIM_PWMIConfig(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);
  825. void TIM_BDTRConfig(TIM_TypeDef* TIMx, TIM_BDTRInitTypeDef *TIM_BDTRInitStruct);
  826. void TIM_TimeBaseStructInit(TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);
  827. void TIM_OCStructInit(TIM_OCInitTypeDef* TIM_OCInitStruct);
  828. void TIM_ICStructInit(TIM_ICInitTypeDef* TIM_ICInitStruct);
  829. void TIM_BDTRStructInit(TIM_BDTRInitTypeDef* TIM_BDTRInitStruct);
  830. void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState);
  831. void TIM_CtrlPWMOutputs(TIM_TypeDef* TIMx, FunctionalState NewState);
  832. void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState);
  833. void TIM_GenerateEvent(TIM_TypeDef* TIMx, uint16_t TIM_EventSource);
  834. void TIM_DMAConfig(TIM_TypeDef* TIMx, uint16_t TIM_DMABase, uint16_t TIM_DMABurstLength);
  835. void TIM_DMACmd(TIM_TypeDef* TIMx, uint16_t TIM_DMASource, FunctionalState NewState);
  836. void TIM_InternalClockConfig(TIM_TypeDef* TIMx);
  837. void TIM_ITRxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);
  838. void TIM_TIxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_TIxExternalCLKSource,
  839. uint16_t TIM_ICPolarity, uint16_t ICFilter);
  840. void TIM_ETRClockMode1Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,
  841. uint16_t ExtTRGFilter);
  842. void TIM_ETRClockMode2Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler,
  843. uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter);
  844. void TIM_ETRConfig(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,
  845. uint16_t ExtTRGFilter);
  846. void TIM_PrescalerConfig(TIM_TypeDef* TIMx, uint16_t Prescaler, uint16_t TIM_PSCReloadMode);
  847. void TIM_CounterModeConfig(TIM_TypeDef* TIMx, uint16_t TIM_CounterMode);
  848. void TIM_SelectInputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);
  849. void TIM_EncoderInterfaceConfig(TIM_TypeDef* TIMx, uint16_t TIM_EncoderMode,
  850. uint16_t TIM_IC1Polarity, uint16_t TIM_IC2Polarity);
  851. void TIM_ForcedOC1Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
  852. void TIM_ForcedOC2Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
  853. void TIM_ForcedOC3Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
  854. void TIM_ForcedOC4Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
  855. void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState);
  856. void TIM_SelectCOM(TIM_TypeDef* TIMx, FunctionalState NewState);
  857. void TIM_SelectCCDMA(TIM_TypeDef* TIMx, FunctionalState NewState);
  858. void TIM_CCPreloadControl(TIM_TypeDef* TIMx, FunctionalState NewState);
  859. void TIM_OC1PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
  860. void TIM_OC2PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
  861. void TIM_OC3PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
  862. void TIM_OC4PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
  863. void TIM_OC1FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);
  864. void TIM_OC2FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);
  865. void TIM_OC3FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);
  866. void TIM_OC4FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);
  867. void TIM_ClearOC1Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
  868. void TIM_ClearOC2Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
  869. void TIM_ClearOC3Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
  870. void TIM_ClearOC4Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
  871. void TIM_OC1PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
  872. void TIM_OC1NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);
  873. void TIM_OC2PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
  874. void TIM_OC2NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);
  875. void TIM_OC3PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
  876. void TIM_OC3NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);
  877. void TIM_OC4PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
  878. void TIM_CCxCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCx);
  879. void TIM_CCxNCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCxN);
  880. void TIM_SelectOCxM(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_OCMode);
  881. void TIM_UpdateDisableConfig(TIM_TypeDef* TIMx, FunctionalState NewState);
  882. void TIM_UpdateRequestConfig(TIM_TypeDef* TIMx, uint16_t TIM_UpdateSource);
  883. void TIM_SelectHallSensor(TIM_TypeDef* TIMx, FunctionalState NewState);
  884. void TIM_SelectOnePulseMode(TIM_TypeDef* TIMx, uint16_t TIM_OPMode);
  885. void TIM_SelectOutputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_TRGOSource);
  886. void TIM_SelectSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_SlaveMode);
  887. void TIM_SelectMasterSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_MasterSlaveMode);
  888. void TIM_SetCounter(TIM_TypeDef* TIMx, uint16_t Counter);
  889. void TIM_SetAutoreload(TIM_TypeDef* TIMx, uint16_t Autoreload);
  890. void TIM_SetCompare1(TIM_TypeDef* TIMx, uint16_t Compare1);
  891. void TIM_SetCompare2(TIM_TypeDef* TIMx, uint16_t Compare2);
  892. void TIM_SetCompare3(TIM_TypeDef* TIMx, uint16_t Compare3);
  893. void TIM_SetCompare4(TIM_TypeDef* TIMx, uint16_t Compare4);
  894. void TIM_SetIC1Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
  895. void TIM_SetIC2Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
  896. void TIM_SetIC3Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
  897. void TIM_SetIC4Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
  898. void TIM_SetClockDivision(TIM_TypeDef* TIMx, uint16_t TIM_CKD);
  899. uint16_t TIM_GetCapture1(TIM_TypeDef* TIMx);
  900. uint16_t TIM_GetCapture2(TIM_TypeDef* TIMx);
  901. uint16_t TIM_GetCapture3(TIM_TypeDef* TIMx);
  902. uint16_t TIM_GetCapture4(TIM_TypeDef* TIMx);
  903. uint16_t TIM_GetCounter(TIM_TypeDef* TIMx);
  904. uint16_t TIM_GetPrescaler(TIM_TypeDef* TIMx);
  905. FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);
  906. void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);
  907. ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT);
  908. void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT);
  909. #endif /*__HAL_TIM_H */
  910. /**
  911. * @}
  912. */
  913. /**
  914. * @}
  915. */
  916. /**
  917. * @}
  918. */
  919. /*-------------------------(C) COPYRIGHT 2017 MindMotion ----------------------*/