You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

stm32l1xx_hal_tim.h 101KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828
  1. /**
  2. ******************************************************************************
  3. * @file stm32l1xx_hal_tim.h
  4. * @author MCD Application Team
  5. * @brief Header file of TIM HAL module.
  6. ******************************************************************************
  7. * @attention
  8. *
  9. * <h2><center>&copy; Copyright (c) 2016 STMicroelectronics.
  10. * All rights reserved.</center></h2>
  11. *
  12. * This software component is licensed by ST under BSD 3-Clause license,
  13. * the "License"; You may not use this file except in compliance with the
  14. * License. You may obtain a copy of the License at:
  15. * opensource.org/licenses/BSD-3-Clause
  16. *
  17. ******************************************************************************
  18. */
  19. /* Define to prevent recursive inclusion -------------------------------------*/
  20. #ifndef STM32L1xx_HAL_TIM_H
  21. #define STM32L1xx_HAL_TIM_H
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25. /* Includes ------------------------------------------------------------------*/
  26. #include "stm32l1xx_hal_def.h"
  27. /** @addtogroup STM32L1xx_HAL_Driver
  28. * @{
  29. */
  30. /** @addtogroup TIM
  31. * @{
  32. */
  33. /* Exported types ------------------------------------------------------------*/
  34. /** @defgroup TIM_Exported_Types TIM Exported Types
  35. * @{
  36. */
  37. /**
  38. * @brief TIM Time base Configuration Structure definition
  39. */
  40. typedef struct
  41. {
  42. uint32_t Prescaler; /*!< Specifies the prescaler value used to divide the TIM clock.
  43. This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */
  44. uint32_t CounterMode; /*!< Specifies the counter mode.
  45. This parameter can be a value of @ref TIM_Counter_Mode */
  46. uint32_t Period; /*!< Specifies the period value to be loaded into the active
  47. Auto-Reload Register at the next update event.
  48. This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF. */
  49. uint32_t ClockDivision; /*!< Specifies the clock division.
  50. This parameter can be a value of @ref TIM_ClockDivision */
  51. uint32_t AutoReloadPreload; /*!< Specifies the auto-reload preload.
  52. This parameter can be a value of @ref TIM_AutoReloadPreload */
  53. } TIM_Base_InitTypeDef;
  54. /**
  55. * @brief TIM Output Compare Configuration Structure definition
  56. */
  57. typedef struct
  58. {
  59. uint32_t OCMode; /*!< Specifies the TIM mode.
  60. This parameter can be a value of @ref TIM_Output_Compare_and_PWM_modes */
  61. uint32_t Pulse; /*!< Specifies the pulse value to be loaded into the Capture Compare Register.
  62. This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */
  63. uint32_t OCPolarity; /*!< Specifies the output polarity.
  64. This parameter can be a value of @ref TIM_Output_Compare_Polarity */
  65. uint32_t OCFastMode; /*!< Specifies the Fast mode state.
  66. This parameter can be a value of @ref TIM_Output_Fast_State
  67. @note This parameter is valid only in PWM1 and PWM2 mode. */
  68. } TIM_OC_InitTypeDef;
  69. /**
  70. * @brief TIM One Pulse Mode Configuration Structure definition
  71. */
  72. typedef struct
  73. {
  74. uint32_t OCMode; /*!< Specifies the TIM mode.
  75. This parameter can be a value of @ref TIM_Output_Compare_and_PWM_modes */
  76. uint32_t Pulse; /*!< Specifies the pulse value to be loaded into the Capture Compare Register.
  77. This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */
  78. uint32_t OCPolarity; /*!< Specifies the output polarity.
  79. This parameter can be a value of @ref TIM_Output_Compare_Polarity */
  80. uint32_t ICPolarity; /*!< Specifies the active edge of the input signal.
  81. This parameter can be a value of @ref TIM_Input_Capture_Polarity */
  82. uint32_t ICSelection; /*!< Specifies the input.
  83. This parameter can be a value of @ref TIM_Input_Capture_Selection */
  84. uint32_t ICFilter; /*!< Specifies the input capture filter.
  85. This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
  86. } TIM_OnePulse_InitTypeDef;
  87. /**
  88. * @brief TIM Input Capture Configuration Structure definition
  89. */
  90. typedef struct
  91. {
  92. uint32_t ICPolarity; /*!< Specifies the active edge of the input signal.
  93. This parameter can be a value of @ref TIM_Input_Capture_Polarity */
  94. uint32_t ICSelection; /*!< Specifies the input.
  95. This parameter can be a value of @ref TIM_Input_Capture_Selection */
  96. uint32_t ICPrescaler; /*!< Specifies the Input Capture Prescaler.
  97. This parameter can be a value of @ref TIM_Input_Capture_Prescaler */
  98. uint32_t ICFilter; /*!< Specifies the input capture filter.
  99. This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
  100. } TIM_IC_InitTypeDef;
  101. /**
  102. * @brief TIM Encoder Configuration Structure definition
  103. */
  104. typedef struct
  105. {
  106. uint32_t EncoderMode; /*!< Specifies the active edge of the input signal.
  107. This parameter can be a value of @ref TIM_Encoder_Mode */
  108. uint32_t IC1Polarity; /*!< Specifies the active edge of the input signal.
  109. This parameter can be a value of @ref TIM_Encoder_Input_Polarity */
  110. uint32_t IC1Selection; /*!< Specifies the input.
  111. This parameter can be a value of @ref TIM_Input_Capture_Selection */
  112. uint32_t IC1Prescaler; /*!< Specifies the Input Capture Prescaler.
  113. This parameter can be a value of @ref TIM_Input_Capture_Prescaler */
  114. uint32_t IC1Filter; /*!< Specifies the input capture filter.
  115. This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
  116. uint32_t IC2Polarity; /*!< Specifies the active edge of the input signal.
  117. This parameter can be a value of @ref TIM_Encoder_Input_Polarity */
  118. uint32_t IC2Selection; /*!< Specifies the input.
  119. This parameter can be a value of @ref TIM_Input_Capture_Selection */
  120. uint32_t IC2Prescaler; /*!< Specifies the Input Capture Prescaler.
  121. This parameter can be a value of @ref TIM_Input_Capture_Prescaler */
  122. uint32_t IC2Filter; /*!< Specifies the input capture filter.
  123. This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
  124. } TIM_Encoder_InitTypeDef;
  125. /**
  126. * @brief Clock Configuration Handle Structure definition
  127. */
  128. typedef struct
  129. {
  130. uint32_t ClockSource; /*!< TIM clock sources
  131. This parameter can be a value of @ref TIM_Clock_Source */
  132. uint32_t ClockPolarity; /*!< TIM clock polarity
  133. This parameter can be a value of @ref TIM_Clock_Polarity */
  134. uint32_t ClockPrescaler; /*!< TIM clock prescaler
  135. This parameter can be a value of @ref TIM_Clock_Prescaler */
  136. uint32_t ClockFilter; /*!< TIM clock filter
  137. This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
  138. } TIM_ClockConfigTypeDef;
  139. /**
  140. * @brief TIM Clear Input Configuration Handle Structure definition
  141. */
  142. typedef struct
  143. {
  144. uint32_t ClearInputState; /*!< TIM clear Input state
  145. This parameter can be ENABLE or DISABLE */
  146. uint32_t ClearInputSource; /*!< TIM clear Input sources
  147. This parameter can be a value of @ref TIM_ClearInput_Source */
  148. uint32_t ClearInputPolarity; /*!< TIM Clear Input polarity
  149. This parameter can be a value of @ref TIM_ClearInput_Polarity */
  150. uint32_t ClearInputPrescaler; /*!< TIM Clear Input prescaler
  151. This parameter must be 0: When OCRef clear feature is used with ETR source, ETR prescaler must be off */
  152. uint32_t ClearInputFilter; /*!< TIM Clear Input filter
  153. This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
  154. } TIM_ClearInputConfigTypeDef;
  155. /**
  156. * @brief TIM Master configuration Structure definition
  157. */
  158. typedef struct
  159. {
  160. uint32_t MasterOutputTrigger; /*!< Trigger output (TRGO) selection
  161. This parameter can be a value of @ref TIM_Master_Mode_Selection */
  162. uint32_t MasterSlaveMode; /*!< Master/slave mode selection
  163. This parameter can be a value of @ref TIM_Master_Slave_Mode
  164. @note When the Master/slave mode is enabled, the effect of
  165. an event on the trigger input (TRGI) is delayed to allow a
  166. perfect synchronization between the current timer and its
  167. slaves (through TRGO). It is not mandatory in case of timer
  168. synchronization mode. */
  169. } TIM_MasterConfigTypeDef;
  170. /**
  171. * @brief TIM Slave configuration Structure definition
  172. */
  173. typedef struct
  174. {
  175. uint32_t SlaveMode; /*!< Slave mode selection
  176. This parameter can be a value of @ref TIM_Slave_Mode */
  177. uint32_t InputTrigger; /*!< Input Trigger source
  178. This parameter can be a value of @ref TIM_Trigger_Selection */
  179. uint32_t TriggerPolarity; /*!< Input Trigger polarity
  180. This parameter can be a value of @ref TIM_Trigger_Polarity */
  181. uint32_t TriggerPrescaler; /*!< Input trigger prescaler
  182. This parameter can be a value of @ref TIM_Trigger_Prescaler */
  183. uint32_t TriggerFilter; /*!< Input trigger filter
  184. This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
  185. } TIM_SlaveConfigTypeDef;
  186. /**
  187. * @brief HAL State structures definition
  188. */
  189. typedef enum
  190. {
  191. HAL_TIM_STATE_RESET = 0x00U, /*!< Peripheral not yet initialized or disabled */
  192. HAL_TIM_STATE_READY = 0x01U, /*!< Peripheral Initialized and ready for use */
  193. HAL_TIM_STATE_BUSY = 0x02U, /*!< An internal process is ongoing */
  194. HAL_TIM_STATE_TIMEOUT = 0x03U, /*!< Timeout state */
  195. HAL_TIM_STATE_ERROR = 0x04U /*!< Reception process is ongoing */
  196. } HAL_TIM_StateTypeDef;
  197. /**
  198. * @brief TIM Channel States definition
  199. */
  200. typedef enum
  201. {
  202. HAL_TIM_CHANNEL_STATE_RESET = 0x00U, /*!< TIM Channel initial state */
  203. HAL_TIM_CHANNEL_STATE_READY = 0x01U, /*!< TIM Channel ready for use */
  204. HAL_TIM_CHANNEL_STATE_BUSY = 0x02U, /*!< An internal process is ongoing on the TIM channel */
  205. } HAL_TIM_ChannelStateTypeDef;
  206. /**
  207. * @brief DMA Burst States definition
  208. */
  209. typedef enum
  210. {
  211. HAL_DMA_BURST_STATE_RESET = 0x00U, /*!< DMA Burst initial state */
  212. HAL_DMA_BURST_STATE_READY = 0x01U, /*!< DMA Burst ready for use */
  213. HAL_DMA_BURST_STATE_BUSY = 0x02U, /*!< Ongoing DMA Burst */
  214. } HAL_TIM_DMABurstStateTypeDef;
  215. /**
  216. * @brief HAL Active channel structures definition
  217. */
  218. typedef enum
  219. {
  220. HAL_TIM_ACTIVE_CHANNEL_1 = 0x01U, /*!< The active channel is 1 */
  221. HAL_TIM_ACTIVE_CHANNEL_2 = 0x02U, /*!< The active channel is 2 */
  222. HAL_TIM_ACTIVE_CHANNEL_3 = 0x04U, /*!< The active channel is 3 */
  223. HAL_TIM_ACTIVE_CHANNEL_4 = 0x08U, /*!< The active channel is 4 */
  224. HAL_TIM_ACTIVE_CHANNEL_CLEARED = 0x00U /*!< All active channels cleared */
  225. } HAL_TIM_ActiveChannel;
  226. /**
  227. * @brief TIM Time Base Handle Structure definition
  228. */
  229. #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
  230. typedef struct __TIM_HandleTypeDef
  231. #else
  232. typedef struct
  233. #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
  234. {
  235. TIM_TypeDef *Instance; /*!< Register base address */
  236. TIM_Base_InitTypeDef Init; /*!< TIM Time Base required parameters */
  237. HAL_TIM_ActiveChannel Channel; /*!< Active channel */
  238. DMA_HandleTypeDef *hdma[7]; /*!< DMA Handlers array
  239. This array is accessed by a @ref DMA_Handle_index */
  240. HAL_LockTypeDef Lock; /*!< Locking object */
  241. __IO HAL_TIM_StateTypeDef State; /*!< TIM operation state */
  242. __IO HAL_TIM_ChannelStateTypeDef ChannelState[4]; /*!< TIM channel operation state */
  243. __IO HAL_TIM_DMABurstStateTypeDef DMABurstState; /*!< DMA burst operation state */
  244. #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
  245. void (* Base_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Base Msp Init Callback */
  246. void (* Base_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Base Msp DeInit Callback */
  247. void (* IC_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM IC Msp Init Callback */
  248. void (* IC_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM IC Msp DeInit Callback */
  249. void (* OC_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM OC Msp Init Callback */
  250. void (* OC_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM OC Msp DeInit Callback */
  251. void (* PWM_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM PWM Msp Init Callback */
  252. void (* PWM_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM PWM Msp DeInit Callback */
  253. void (* OnePulse_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM One Pulse Msp Init Callback */
  254. void (* OnePulse_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM One Pulse Msp DeInit Callback */
  255. void (* Encoder_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Encoder Msp Init Callback */
  256. void (* Encoder_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Encoder Msp DeInit Callback */
  257. void (* PeriodElapsedCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Period Elapsed Callback */
  258. void (* PeriodElapsedHalfCpltCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Period Elapsed half complete Callback */
  259. void (* TriggerCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Trigger Callback */
  260. void (* TriggerHalfCpltCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Trigger half complete Callback */
  261. void (* IC_CaptureCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Input Capture Callback */
  262. void (* IC_CaptureHalfCpltCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Input Capture half complete Callback */
  263. void (* OC_DelayElapsedCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Output Compare Delay Elapsed Callback */
  264. void (* PWM_PulseFinishedCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM PWM Pulse Finished Callback */
  265. void (* PWM_PulseFinishedHalfCpltCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM PWM Pulse Finished half complete Callback */
  266. void (* ErrorCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Error Callback */
  267. #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
  268. } TIM_HandleTypeDef;
  269. #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
  270. /**
  271. * @brief HAL TIM Callback ID enumeration definition
  272. */
  273. typedef enum
  274. {
  275. HAL_TIM_BASE_MSPINIT_CB_ID = 0x00U /*!< TIM Base MspInit Callback ID */
  276. , HAL_TIM_BASE_MSPDEINIT_CB_ID = 0x01U /*!< TIM Base MspDeInit Callback ID */
  277. , HAL_TIM_IC_MSPINIT_CB_ID = 0x02U /*!< TIM IC MspInit Callback ID */
  278. , HAL_TIM_IC_MSPDEINIT_CB_ID = 0x03U /*!< TIM IC MspDeInit Callback ID */
  279. , HAL_TIM_OC_MSPINIT_CB_ID = 0x04U /*!< TIM OC MspInit Callback ID */
  280. , HAL_TIM_OC_MSPDEINIT_CB_ID = 0x05U /*!< TIM OC MspDeInit Callback ID */
  281. , HAL_TIM_PWM_MSPINIT_CB_ID = 0x06U /*!< TIM PWM MspInit Callback ID */
  282. , HAL_TIM_PWM_MSPDEINIT_CB_ID = 0x07U /*!< TIM PWM MspDeInit Callback ID */
  283. , HAL_TIM_ONE_PULSE_MSPINIT_CB_ID = 0x08U /*!< TIM One Pulse MspInit Callback ID */
  284. , HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID = 0x09U /*!< TIM One Pulse MspDeInit Callback ID */
  285. , HAL_TIM_ENCODER_MSPINIT_CB_ID = 0x0AU /*!< TIM Encoder MspInit Callback ID */
  286. , HAL_TIM_ENCODER_MSPDEINIT_CB_ID = 0x0BU /*!< TIM Encoder MspDeInit Callback ID */
  287. , HAL_TIM_PERIOD_ELAPSED_CB_ID = 0x0EU /*!< TIM Period Elapsed Callback ID */
  288. , HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID = 0x0FU /*!< TIM Period Elapsed half complete Callback ID */
  289. , HAL_TIM_TRIGGER_CB_ID = 0x10U /*!< TIM Trigger Callback ID */
  290. , HAL_TIM_TRIGGER_HALF_CB_ID = 0x11U /*!< TIM Trigger half complete Callback ID */
  291. , HAL_TIM_IC_CAPTURE_CB_ID = 0x12U /*!< TIM Input Capture Callback ID */
  292. , HAL_TIM_IC_CAPTURE_HALF_CB_ID = 0x13U /*!< TIM Input Capture half complete Callback ID */
  293. , HAL_TIM_OC_DELAY_ELAPSED_CB_ID = 0x14U /*!< TIM Output Compare Delay Elapsed Callback ID */
  294. , HAL_TIM_PWM_PULSE_FINISHED_CB_ID = 0x15U /*!< TIM PWM Pulse Finished Callback ID */
  295. , HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID = 0x16U /*!< TIM PWM Pulse Finished half complete Callback ID */
  296. , HAL_TIM_ERROR_CB_ID = 0x17U /*!< TIM Error Callback ID */
  297. } HAL_TIM_CallbackIDTypeDef;
  298. /**
  299. * @brief HAL TIM Callback pointer definition
  300. */
  301. typedef void (*pTIM_CallbackTypeDef)(TIM_HandleTypeDef *htim); /*!< pointer to the TIM callback function */
  302. #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
  303. /**
  304. * @}
  305. */
  306. /* End of exported types -----------------------------------------------------*/
  307. /* Exported constants --------------------------------------------------------*/
  308. /** @defgroup TIM_Exported_Constants TIM Exported Constants
  309. * @{
  310. */
  311. /** @defgroup TIM_ClearInput_Source TIM Clear Input Source
  312. * @{
  313. */
  314. #define TIM_CLEARINPUTSOURCE_NONE 0x00000000U /*!< OCREF_CLR is disabled */
  315. #define TIM_CLEARINPUTSOURCE_ETR 0x00000001U /*!< OCREF_CLR is connected to ETRF input */
  316. #define TIM_CLEARINPUTSOURCE_OCREFCLR 0x00000002U /*!< OCREF_CLR is connected to OCREF_CLR_INT */
  317. /**
  318. * @}
  319. */
  320. /** @defgroup TIM_DMA_Base_address TIM DMA Base Address
  321. * @{
  322. */
  323. #define TIM_DMABASE_CR1 0x00000000U
  324. #define TIM_DMABASE_CR2 0x00000001U
  325. #define TIM_DMABASE_SMCR 0x00000002U
  326. #define TIM_DMABASE_DIER 0x00000003U
  327. #define TIM_DMABASE_SR 0x00000004U
  328. #define TIM_DMABASE_EGR 0x00000005U
  329. #define TIM_DMABASE_CCMR1 0x00000006U
  330. #define TIM_DMABASE_CCMR2 0x00000007U
  331. #define TIM_DMABASE_CCER 0x00000008U
  332. #define TIM_DMABASE_CNT 0x00000009U
  333. #define TIM_DMABASE_PSC 0x0000000AU
  334. #define TIM_DMABASE_ARR 0x0000000BU
  335. #define TIM_DMABASE_CCR1 0x0000000DU
  336. #define TIM_DMABASE_CCR2 0x0000000EU
  337. #define TIM_DMABASE_CCR3 0x0000000FU
  338. #define TIM_DMABASE_CCR4 0x00000010U
  339. #define TIM_DMABASE_DCR 0x00000012U
  340. #define TIM_DMABASE_DMAR 0x00000013U
  341. #define TIM_DMABASE_OR 0x00000014U
  342. /**
  343. * @}
  344. */
  345. /** @defgroup TIM_Event_Source TIM Event Source
  346. * @{
  347. */
  348. #define TIM_EVENTSOURCE_UPDATE TIM_EGR_UG /*!< Reinitialize the counter and generates an update of the registers */
  349. #define TIM_EVENTSOURCE_CC1 TIM_EGR_CC1G /*!< A capture/compare event is generated on channel 1 */
  350. #define TIM_EVENTSOURCE_CC2 TIM_EGR_CC2G /*!< A capture/compare event is generated on channel 2 */
  351. #define TIM_EVENTSOURCE_CC3 TIM_EGR_CC3G /*!< A capture/compare event is generated on channel 3 */
  352. #define TIM_EVENTSOURCE_CC4 TIM_EGR_CC4G /*!< A capture/compare event is generated on channel 4 */
  353. #define TIM_EVENTSOURCE_TRIGGER TIM_EGR_TG /*!< A trigger event is generated */
  354. /**
  355. * @}
  356. */
  357. /** @defgroup TIM_Input_Channel_Polarity TIM Input Channel polarity
  358. * @{
  359. */
  360. #define TIM_INPUTCHANNELPOLARITY_RISING 0x00000000U /*!< Polarity for TIx source */
  361. #define TIM_INPUTCHANNELPOLARITY_FALLING TIM_CCER_CC1P /*!< Polarity for TIx source */
  362. #define TIM_INPUTCHANNELPOLARITY_BOTHEDGE (TIM_CCER_CC1P | TIM_CCER_CC1NP) /*!< Polarity for TIx source */
  363. /**
  364. * @}
  365. */
  366. /** @defgroup TIM_ETR_Polarity TIM ETR Polarity
  367. * @{
  368. */
  369. #define TIM_ETRPOLARITY_INVERTED TIM_SMCR_ETP /*!< Polarity for ETR source */
  370. #define TIM_ETRPOLARITY_NONINVERTED 0x00000000U /*!< Polarity for ETR source */
  371. /**
  372. * @}
  373. */
  374. /** @defgroup TIM_ETR_Prescaler TIM ETR Prescaler
  375. * @{
  376. */
  377. #define TIM_ETRPRESCALER_DIV1 0x00000000U /*!< No prescaler is used */
  378. #define TIM_ETRPRESCALER_DIV2 TIM_SMCR_ETPS_0 /*!< ETR input source is divided by 2 */
  379. #define TIM_ETRPRESCALER_DIV4 TIM_SMCR_ETPS_1 /*!< ETR input source is divided by 4 */
  380. #define TIM_ETRPRESCALER_DIV8 TIM_SMCR_ETPS /*!< ETR input source is divided by 8 */
  381. /**
  382. * @}
  383. */
  384. /** @defgroup TIM_Counter_Mode TIM Counter Mode
  385. * @{
  386. */
  387. #define TIM_COUNTERMODE_UP 0x00000000U /*!< Counter used as up-counter */
  388. #define TIM_COUNTERMODE_DOWN TIM_CR1_DIR /*!< Counter used as down-counter */
  389. #define TIM_COUNTERMODE_CENTERALIGNED1 TIM_CR1_CMS_0 /*!< Center-aligned mode 1 */
  390. #define TIM_COUNTERMODE_CENTERALIGNED2 TIM_CR1_CMS_1 /*!< Center-aligned mode 2 */
  391. #define TIM_COUNTERMODE_CENTERALIGNED3 TIM_CR1_CMS /*!< Center-aligned mode 3 */
  392. /**
  393. * @}
  394. */
  395. /** @defgroup TIM_ClockDivision TIM Clock Division
  396. * @{
  397. */
  398. #define TIM_CLOCKDIVISION_DIV1 0x00000000U /*!< Clock division: tDTS=tCK_INT */
  399. #define TIM_CLOCKDIVISION_DIV2 TIM_CR1_CKD_0 /*!< Clock division: tDTS=2*tCK_INT */
  400. #define TIM_CLOCKDIVISION_DIV4 TIM_CR1_CKD_1 /*!< Clock division: tDTS=4*tCK_INT */
  401. /**
  402. * @}
  403. */
  404. /** @defgroup TIM_Output_Compare_State TIM Output Compare State
  405. * @{
  406. */
  407. #define TIM_OUTPUTSTATE_DISABLE 0x00000000U /*!< Capture/Compare 1 output disabled */
  408. #define TIM_OUTPUTSTATE_ENABLE TIM_CCER_CC1E /*!< Capture/Compare 1 output enabled */
  409. /**
  410. * @}
  411. */
  412. /** @defgroup TIM_AutoReloadPreload TIM Auto-Reload Preload
  413. * @{
  414. */
  415. #define TIM_AUTORELOAD_PRELOAD_DISABLE 0x00000000U /*!< TIMx_ARR register is not buffered */
  416. #define TIM_AUTORELOAD_PRELOAD_ENABLE TIM_CR1_ARPE /*!< TIMx_ARR register is buffered */
  417. /**
  418. * @}
  419. */
  420. /** @defgroup TIM_Output_Fast_State TIM Output Fast State
  421. * @{
  422. */
  423. #define TIM_OCFAST_DISABLE 0x00000000U /*!< Output Compare fast disable */
  424. #define TIM_OCFAST_ENABLE TIM_CCMR1_OC1FE /*!< Output Compare fast enable */
  425. /**
  426. * @}
  427. */
  428. /** @defgroup TIM_Output_Compare_N_State TIM Complementary Output Compare State
  429. * @{
  430. */
  431. #define TIM_OUTPUTNSTATE_DISABLE 0x00000000U /*!< OCxN is disabled */
  432. #define TIM_OUTPUTNSTATE_ENABLE TIM_CCER_CC1NE /*!< OCxN is enabled */
  433. /**
  434. * @}
  435. */
  436. /** @defgroup TIM_Output_Compare_Polarity TIM Output Compare Polarity
  437. * @{
  438. */
  439. #define TIM_OCPOLARITY_HIGH 0x00000000U /*!< Capture/Compare output polarity */
  440. #define TIM_OCPOLARITY_LOW TIM_CCER_CC1P /*!< Capture/Compare output polarity */
  441. /**
  442. * @}
  443. */
  444. /** @defgroup TIM_Input_Capture_Polarity TIM Input Capture Polarity
  445. * @{
  446. */
  447. #define TIM_ICPOLARITY_RISING TIM_INPUTCHANNELPOLARITY_RISING /*!< Capture triggered by rising edge on timer input */
  448. #define TIM_ICPOLARITY_FALLING TIM_INPUTCHANNELPOLARITY_FALLING /*!< Capture triggered by falling edge on timer input */
  449. #define TIM_ICPOLARITY_BOTHEDGE TIM_INPUTCHANNELPOLARITY_BOTHEDGE /*!< Capture triggered by both rising and falling edges on timer input*/
  450. /**
  451. * @}
  452. */
  453. /** @defgroup TIM_Encoder_Input_Polarity TIM Encoder Input Polarity
  454. * @{
  455. */
  456. #define TIM_ENCODERINPUTPOLARITY_RISING TIM_INPUTCHANNELPOLARITY_RISING /*!< Encoder input with rising edge polarity */
  457. #define TIM_ENCODERINPUTPOLARITY_FALLING TIM_INPUTCHANNELPOLARITY_FALLING /*!< Encoder input with falling edge polarity */
  458. /**
  459. * @}
  460. */
  461. /** @defgroup TIM_Input_Capture_Selection TIM Input Capture Selection
  462. * @{
  463. */
  464. #define TIM_ICSELECTION_DIRECTTI TIM_CCMR1_CC1S_0 /*!< TIM Input 1, 2, 3 or 4 is selected to be
  465. connected to IC1, IC2, IC3 or IC4, respectively */
  466. #define TIM_ICSELECTION_INDIRECTTI TIM_CCMR1_CC1S_1 /*!< TIM Input 1, 2, 3 or 4 is selected to be
  467. connected to IC2, IC1, IC4 or IC3, respectively */
  468. #define TIM_ICSELECTION_TRC TIM_CCMR1_CC1S /*!< TIM Input 1, 2, 3 or 4 is selected to be connected to TRC */
  469. /**
  470. * @}
  471. */
  472. /** @defgroup TIM_Input_Capture_Prescaler TIM Input Capture Prescaler
  473. * @{
  474. */
  475. #define TIM_ICPSC_DIV1 0x00000000U /*!< Capture performed each time an edge is detected on the capture input */
  476. #define TIM_ICPSC_DIV2 TIM_CCMR1_IC1PSC_0 /*!< Capture performed once every 2 events */
  477. #define TIM_ICPSC_DIV4 TIM_CCMR1_IC1PSC_1 /*!< Capture performed once every 4 events */
  478. #define TIM_ICPSC_DIV8 TIM_CCMR1_IC1PSC /*!< Capture performed once every 8 events */
  479. /**
  480. * @}
  481. */
  482. /** @defgroup TIM_One_Pulse_Mode TIM One Pulse Mode
  483. * @{
  484. */
  485. #define TIM_OPMODE_SINGLE TIM_CR1_OPM /*!< Counter stops counting at the next update event */
  486. #define TIM_OPMODE_REPETITIVE 0x00000000U /*!< Counter is not stopped at update event */
  487. /**
  488. * @}
  489. */
  490. /** @defgroup TIM_Encoder_Mode TIM Encoder Mode
  491. * @{
  492. */
  493. #define TIM_ENCODERMODE_TI1 TIM_SMCR_SMS_0 /*!< Quadrature encoder mode 1, x2 mode, counts up/down on TI1FP1 edge depending on TI2FP2 level */
  494. #define TIM_ENCODERMODE_TI2 TIM_SMCR_SMS_1 /*!< Quadrature encoder mode 2, x2 mode, counts up/down on TI2FP2 edge depending on TI1FP1 level. */
  495. #define TIM_ENCODERMODE_TI12 (TIM_SMCR_SMS_1 | TIM_SMCR_SMS_0) /*!< Quadrature encoder mode 3, x4 mode, counts up/down on both TI1FP1 and TI2FP2 edges depending on the level of the other input. */
  496. /**
  497. * @}
  498. */
  499. /** @defgroup TIM_Interrupt_definition TIM interrupt Definition
  500. * @{
  501. */
  502. #define TIM_IT_UPDATE TIM_DIER_UIE /*!< Update interrupt */
  503. #define TIM_IT_CC1 TIM_DIER_CC1IE /*!< Capture/Compare 1 interrupt */
  504. #define TIM_IT_CC2 TIM_DIER_CC2IE /*!< Capture/Compare 2 interrupt */
  505. #define TIM_IT_CC3 TIM_DIER_CC3IE /*!< Capture/Compare 3 interrupt */
  506. #define TIM_IT_CC4 TIM_DIER_CC4IE /*!< Capture/Compare 4 interrupt */
  507. #define TIM_IT_TRIGGER TIM_DIER_TIE /*!< Trigger interrupt */
  508. /**
  509. * @}
  510. */
  511. /** @defgroup TIM_DMA_sources TIM DMA Sources
  512. * @{
  513. */
  514. #define TIM_DMA_UPDATE TIM_DIER_UDE /*!< DMA request is triggered by the update event */
  515. #define TIM_DMA_CC1 TIM_DIER_CC1DE /*!< DMA request is triggered by the capture/compare macth 1 event */
  516. #define TIM_DMA_CC2 TIM_DIER_CC2DE /*!< DMA request is triggered by the capture/compare macth 2 event event */
  517. #define TIM_DMA_CC3 TIM_DIER_CC3DE /*!< DMA request is triggered by the capture/compare macth 3 event event */
  518. #define TIM_DMA_CC4 TIM_DIER_CC4DE /*!< DMA request is triggered by the capture/compare macth 4 event event */
  519. #define TIM_DMA_TRIGGER TIM_DIER_TDE /*!< DMA request is triggered by the trigger event */
  520. /**
  521. * @}
  522. */
  523. /** @defgroup TIM_Flag_definition TIM Flag Definition
  524. * @{
  525. */
  526. #define TIM_FLAG_UPDATE TIM_SR_UIF /*!< Update interrupt flag */
  527. #define TIM_FLAG_CC1 TIM_SR_CC1IF /*!< Capture/Compare 1 interrupt flag */
  528. #define TIM_FLAG_CC2 TIM_SR_CC2IF /*!< Capture/Compare 2 interrupt flag */
  529. #define TIM_FLAG_CC3 TIM_SR_CC3IF /*!< Capture/Compare 3 interrupt flag */
  530. #define TIM_FLAG_CC4 TIM_SR_CC4IF /*!< Capture/Compare 4 interrupt flag */
  531. #define TIM_FLAG_TRIGGER TIM_SR_TIF /*!< Trigger interrupt flag */
  532. #define TIM_FLAG_CC1OF TIM_SR_CC1OF /*!< Capture 1 overcapture flag */
  533. #define TIM_FLAG_CC2OF TIM_SR_CC2OF /*!< Capture 2 overcapture flag */
  534. #define TIM_FLAG_CC3OF TIM_SR_CC3OF /*!< Capture 3 overcapture flag */
  535. #define TIM_FLAG_CC4OF TIM_SR_CC4OF /*!< Capture 4 overcapture flag */
  536. /**
  537. * @}
  538. */
  539. /** @defgroup TIM_Channel TIM Channel
  540. * @{
  541. */
  542. #define TIM_CHANNEL_1 0x00000000U /*!< Capture/compare channel 1 identifier */
  543. #define TIM_CHANNEL_2 0x00000004U /*!< Capture/compare channel 2 identifier */
  544. #define TIM_CHANNEL_3 0x00000008U /*!< Capture/compare channel 3 identifier */
  545. #define TIM_CHANNEL_4 0x0000000CU /*!< Capture/compare channel 4 identifier */
  546. #define TIM_CHANNEL_ALL 0x0000003CU /*!< Global Capture/compare channel identifier */
  547. /**
  548. * @}
  549. */
  550. /** @defgroup TIM_Clock_Source TIM Clock Source
  551. * @{
  552. */
  553. #define TIM_CLOCKSOURCE_ETRMODE2 TIM_SMCR_ETPS_1 /*!< External clock source mode 2 */
  554. #define TIM_CLOCKSOURCE_INTERNAL TIM_SMCR_ETPS_0 /*!< Internal clock source */
  555. #define TIM_CLOCKSOURCE_ITR0 TIM_TS_ITR0 /*!< External clock source mode 1 (ITR0) */
  556. #define TIM_CLOCKSOURCE_ITR1 TIM_TS_ITR1 /*!< External clock source mode 1 (ITR1) */
  557. #define TIM_CLOCKSOURCE_ITR2 TIM_TS_ITR2 /*!< External clock source mode 1 (ITR2) */
  558. #define TIM_CLOCKSOURCE_ITR3 TIM_TS_ITR3 /*!< External clock source mode 1 (ITR3) */
  559. #define TIM_CLOCKSOURCE_TI1ED TIM_TS_TI1F_ED /*!< External clock source mode 1 (TTI1FP1 + edge detect.) */
  560. #define TIM_CLOCKSOURCE_TI1 TIM_TS_TI1FP1 /*!< External clock source mode 1 (TTI1FP1) */
  561. #define TIM_CLOCKSOURCE_TI2 TIM_TS_TI2FP2 /*!< External clock source mode 1 (TTI2FP2) */
  562. #define TIM_CLOCKSOURCE_ETRMODE1 TIM_TS_ETRF /*!< External clock source mode 1 (ETRF) */
  563. /**
  564. * @}
  565. */
  566. /** @defgroup TIM_Clock_Polarity TIM Clock Polarity
  567. * @{
  568. */
  569. #define TIM_CLOCKPOLARITY_INVERTED TIM_ETRPOLARITY_INVERTED /*!< Polarity for ETRx clock sources */
  570. #define TIM_CLOCKPOLARITY_NONINVERTED TIM_ETRPOLARITY_NONINVERTED /*!< Polarity for ETRx clock sources */
  571. #define TIM_CLOCKPOLARITY_RISING TIM_INPUTCHANNELPOLARITY_RISING /*!< Polarity for TIx clock sources */
  572. #define TIM_CLOCKPOLARITY_FALLING TIM_INPUTCHANNELPOLARITY_FALLING /*!< Polarity for TIx clock sources */
  573. #define TIM_CLOCKPOLARITY_BOTHEDGE TIM_INPUTCHANNELPOLARITY_BOTHEDGE /*!< Polarity for TIx clock sources */
  574. /**
  575. * @}
  576. */
  577. /** @defgroup TIM_Clock_Prescaler TIM Clock Prescaler
  578. * @{
  579. */
  580. #define TIM_CLOCKPRESCALER_DIV1 TIM_ETRPRESCALER_DIV1 /*!< No prescaler is used */
  581. #define TIM_CLOCKPRESCALER_DIV2 TIM_ETRPRESCALER_DIV2 /*!< Prescaler for External ETR Clock: Capture performed once every 2 events. */
  582. #define TIM_CLOCKPRESCALER_DIV4 TIM_ETRPRESCALER_DIV4 /*!< Prescaler for External ETR Clock: Capture performed once every 4 events. */
  583. #define TIM_CLOCKPRESCALER_DIV8 TIM_ETRPRESCALER_DIV8 /*!< Prescaler for External ETR Clock: Capture performed once every 8 events. */
  584. /**
  585. * @}
  586. */
  587. /** @defgroup TIM_ClearInput_Polarity TIM Clear Input Polarity
  588. * @{
  589. */
  590. #define TIM_CLEARINPUTPOLARITY_INVERTED TIM_ETRPOLARITY_INVERTED /*!< Polarity for ETRx pin */
  591. #define TIM_CLEARINPUTPOLARITY_NONINVERTED TIM_ETRPOLARITY_NONINVERTED /*!< Polarity for ETRx pin */
  592. /**
  593. * @}
  594. */
  595. /** @defgroup TIM_ClearInput_Prescaler TIM Clear Input Prescaler
  596. * @{
  597. */
  598. #define TIM_CLEARINPUTPRESCALER_DIV1 TIM_ETRPRESCALER_DIV1 /*!< No prescaler is used */
  599. #define TIM_CLEARINPUTPRESCALER_DIV2 TIM_ETRPRESCALER_DIV2 /*!< Prescaler for External ETR pin: Capture performed once every 2 events. */
  600. #define TIM_CLEARINPUTPRESCALER_DIV4 TIM_ETRPRESCALER_DIV4 /*!< Prescaler for External ETR pin: Capture performed once every 4 events. */
  601. #define TIM_CLEARINPUTPRESCALER_DIV8 TIM_ETRPRESCALER_DIV8 /*!< Prescaler for External ETR pin: Capture performed once every 8 events. */
  602. /**
  603. * @}
  604. */
  605. /** @defgroup TIM_Master_Mode_Selection TIM Master Mode Selection
  606. * @{
  607. */
  608. #define TIM_TRGO_RESET 0x00000000U /*!< TIMx_EGR.UG bit is used as trigger output (TRGO) */
  609. #define TIM_TRGO_ENABLE TIM_CR2_MMS_0 /*!< TIMx_CR1.CEN bit is used as trigger output (TRGO) */
  610. #define TIM_TRGO_UPDATE TIM_CR2_MMS_1 /*!< Update event is used as trigger output (TRGO) */
  611. #define TIM_TRGO_OC1 (TIM_CR2_MMS_1 | TIM_CR2_MMS_0) /*!< Capture or a compare match 1 is used as trigger output (TRGO) */
  612. #define TIM_TRGO_OC1REF TIM_CR2_MMS_2 /*!< OC1REF signal is used as trigger output (TRGO) */
  613. #define TIM_TRGO_OC2REF (TIM_CR2_MMS_2 | TIM_CR2_MMS_0) /*!< OC2REF signal is used as trigger output(TRGO) */
  614. #define TIM_TRGO_OC3REF (TIM_CR2_MMS_2 | TIM_CR2_MMS_1) /*!< OC3REF signal is used as trigger output(TRGO) */
  615. #define TIM_TRGO_OC4REF (TIM_CR2_MMS_2 | TIM_CR2_MMS_1 | TIM_CR2_MMS_0) /*!< OC4REF signal is used as trigger output(TRGO) */
  616. /**
  617. * @}
  618. */
  619. /** @defgroup TIM_Master_Slave_Mode TIM Master/Slave Mode
  620. * @{
  621. */
  622. #define TIM_MASTERSLAVEMODE_ENABLE TIM_SMCR_MSM /*!< No action */
  623. #define TIM_MASTERSLAVEMODE_DISABLE 0x00000000U /*!< Master/slave mode is selected */
  624. /**
  625. * @}
  626. */
  627. /** @defgroup TIM_Slave_Mode TIM Slave mode
  628. * @{
  629. */
  630. #define TIM_SLAVEMODE_DISABLE 0x00000000U /*!< Slave mode disabled */
  631. #define TIM_SLAVEMODE_RESET TIM_SMCR_SMS_2 /*!< Reset Mode */
  632. #define TIM_SLAVEMODE_GATED (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_0) /*!< Gated Mode */
  633. #define TIM_SLAVEMODE_TRIGGER (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1) /*!< Trigger Mode */
  634. #define TIM_SLAVEMODE_EXTERNAL1 (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1 | TIM_SMCR_SMS_0) /*!< External Clock Mode 1 */
  635. /**
  636. * @}
  637. */
  638. /** @defgroup TIM_Output_Compare_and_PWM_modes TIM Output Compare and PWM Modes
  639. * @{
  640. */
  641. #define TIM_OCMODE_TIMING 0x00000000U /*!< Frozen */
  642. #define TIM_OCMODE_ACTIVE TIM_CCMR1_OC1M_0 /*!< Set channel to active level on match */
  643. #define TIM_OCMODE_INACTIVE TIM_CCMR1_OC1M_1 /*!< Set channel to inactive level on match */
  644. #define TIM_OCMODE_TOGGLE (TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0) /*!< Toggle */
  645. #define TIM_OCMODE_PWM1 (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1) /*!< PWM mode 1 */
  646. #define TIM_OCMODE_PWM2 (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0) /*!< PWM mode 2 */
  647. #define TIM_OCMODE_FORCED_ACTIVE (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_0) /*!< Force active level */
  648. #define TIM_OCMODE_FORCED_INACTIVE TIM_CCMR1_OC1M_2 /*!< Force inactive level */
  649. /**
  650. * @}
  651. */
  652. /** @defgroup TIM_Trigger_Selection TIM Trigger Selection
  653. * @{
  654. */
  655. #define TIM_TS_ITR0 0x00000000U /*!< Internal Trigger 0 (ITR0) */
  656. #define TIM_TS_ITR1 TIM_SMCR_TS_0 /*!< Internal Trigger 1 (ITR1) */
  657. #define TIM_TS_ITR2 TIM_SMCR_TS_1 /*!< Internal Trigger 2 (ITR2) */
  658. #define TIM_TS_ITR3 (TIM_SMCR_TS_0 | TIM_SMCR_TS_1) /*!< Internal Trigger 3 (ITR3) */
  659. #define TIM_TS_TI1F_ED TIM_SMCR_TS_2 /*!< TI1 Edge Detector (TI1F_ED) */
  660. #define TIM_TS_TI1FP1 (TIM_SMCR_TS_0 | TIM_SMCR_TS_2) /*!< Filtered Timer Input 1 (TI1FP1) */
  661. #define TIM_TS_TI2FP2 (TIM_SMCR_TS_1 | TIM_SMCR_TS_2) /*!< Filtered Timer Input 2 (TI2FP2) */
  662. #define TIM_TS_ETRF (TIM_SMCR_TS_0 | TIM_SMCR_TS_1 | TIM_SMCR_TS_2) /*!< Filtered External Trigger input (ETRF) */
  663. #define TIM_TS_NONE 0x0000FFFFU /*!< No trigger selected */
  664. /**
  665. * @}
  666. */
  667. /** @defgroup TIM_Trigger_Polarity TIM Trigger Polarity
  668. * @{
  669. */
  670. #define TIM_TRIGGERPOLARITY_INVERTED TIM_ETRPOLARITY_INVERTED /*!< Polarity for ETRx trigger sources */
  671. #define TIM_TRIGGERPOLARITY_NONINVERTED TIM_ETRPOLARITY_NONINVERTED /*!< Polarity for ETRx trigger sources */
  672. #define TIM_TRIGGERPOLARITY_RISING TIM_INPUTCHANNELPOLARITY_RISING /*!< Polarity for TIxFPx or TI1_ED trigger sources */
  673. #define TIM_TRIGGERPOLARITY_FALLING TIM_INPUTCHANNELPOLARITY_FALLING /*!< Polarity for TIxFPx or TI1_ED trigger sources */
  674. #define TIM_TRIGGERPOLARITY_BOTHEDGE TIM_INPUTCHANNELPOLARITY_BOTHEDGE /*!< Polarity for TIxFPx or TI1_ED trigger sources */
  675. /**
  676. * @}
  677. */
  678. /** @defgroup TIM_Trigger_Prescaler TIM Trigger Prescaler
  679. * @{
  680. */
  681. #define TIM_TRIGGERPRESCALER_DIV1 TIM_ETRPRESCALER_DIV1 /*!< No prescaler is used */
  682. #define TIM_TRIGGERPRESCALER_DIV2 TIM_ETRPRESCALER_DIV2 /*!< Prescaler for External ETR Trigger: Capture performed once every 2 events. */
  683. #define TIM_TRIGGERPRESCALER_DIV4 TIM_ETRPRESCALER_DIV4 /*!< Prescaler for External ETR Trigger: Capture performed once every 4 events. */
  684. #define TIM_TRIGGERPRESCALER_DIV8 TIM_ETRPRESCALER_DIV8 /*!< Prescaler for External ETR Trigger: Capture performed once every 8 events. */
  685. /**
  686. * @}
  687. */
  688. /** @defgroup TIM_TI1_Selection TIM TI1 Input Selection
  689. * @{
  690. */
  691. #define TIM_TI1SELECTION_CH1 0x00000000U /*!< The TIMx_CH1 pin is connected to TI1 input */
  692. #define TIM_TI1SELECTION_XORCOMBINATION TIM_CR2_TI1S /*!< The TIMx_CH1, CH2 and CH3 pins are connected to the TI1 input (XOR combination) */
  693. /**
  694. * @}
  695. */
  696. /** @defgroup TIM_DMA_Burst_Length TIM DMA Burst Length
  697. * @{
  698. */
  699. #define TIM_DMABURSTLENGTH_1TRANSFER 0x00000000U /*!< The transfer is done to 1 register starting trom TIMx_CR1 + TIMx_DCR.DBA */
  700. #define TIM_DMABURSTLENGTH_2TRANSFERS 0x00000100U /*!< The transfer is done to 2 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */
  701. #define TIM_DMABURSTLENGTH_3TRANSFERS 0x00000200U /*!< The transfer is done to 3 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */
  702. #define TIM_DMABURSTLENGTH_4TRANSFERS 0x00000300U /*!< The transfer is done to 4 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */
  703. #define TIM_DMABURSTLENGTH_5TRANSFERS 0x00000400U /*!< The transfer is done to 5 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */
  704. #define TIM_DMABURSTLENGTH_6TRANSFERS 0x00000500U /*!< The transfer is done to 6 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */
  705. #define TIM_DMABURSTLENGTH_7TRANSFERS 0x00000600U /*!< The transfer is done to 7 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */
  706. #define TIM_DMABURSTLENGTH_8TRANSFERS 0x00000700U /*!< The transfer is done to 8 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */
  707. #define TIM_DMABURSTLENGTH_9TRANSFERS 0x00000800U /*!< The transfer is done to 9 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */
  708. #define TIM_DMABURSTLENGTH_10TRANSFERS 0x00000900U /*!< The transfer is done to 10 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */
  709. #define TIM_DMABURSTLENGTH_11TRANSFERS 0x00000A00U /*!< The transfer is done to 11 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */
  710. #define TIM_DMABURSTLENGTH_12TRANSFERS 0x00000B00U /*!< The transfer is done to 12 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */
  711. #define TIM_DMABURSTLENGTH_13TRANSFERS 0x00000C00U /*!< The transfer is done to 13 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */
  712. #define TIM_DMABURSTLENGTH_14TRANSFERS 0x00000D00U /*!< The transfer is done to 14 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */
  713. #define TIM_DMABURSTLENGTH_15TRANSFERS 0x00000E00U /*!< The transfer is done to 15 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */
  714. #define TIM_DMABURSTLENGTH_16TRANSFERS 0x00000F00U /*!< The transfer is done to 16 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */
  715. #define TIM_DMABURSTLENGTH_17TRANSFERS 0x00001000U /*!< The transfer is done to 17 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */
  716. #define TIM_DMABURSTLENGTH_18TRANSFERS 0x00001100U /*!< The transfer is done to 18 registers starting trom TIMx_CR1 + TIMx_DCR.DBA */
  717. /**
  718. * @}
  719. */
  720. /** @defgroup DMA_Handle_index TIM DMA Handle Index
  721. * @{
  722. */
  723. #define TIM_DMA_ID_UPDATE ((uint16_t) 0x0000) /*!< Index of the DMA handle used for Update DMA requests */
  724. #define TIM_DMA_ID_CC1 ((uint16_t) 0x0001) /*!< Index of the DMA handle used for Capture/Compare 1 DMA requests */
  725. #define TIM_DMA_ID_CC2 ((uint16_t) 0x0002) /*!< Index of the DMA handle used for Capture/Compare 2 DMA requests */
  726. #define TIM_DMA_ID_CC3 ((uint16_t) 0x0003) /*!< Index of the DMA handle used for Capture/Compare 3 DMA requests */
  727. #define TIM_DMA_ID_CC4 ((uint16_t) 0x0004) /*!< Index of the DMA handle used for Capture/Compare 4 DMA requests */
  728. #define TIM_DMA_ID_TRIGGER ((uint16_t) 0x0006) /*!< Index of the DMA handle used for Trigger DMA requests */
  729. /**
  730. * @}
  731. */
  732. /** @defgroup Channel_CC_State TIM Capture/Compare Channel State
  733. * @{
  734. */
  735. #define TIM_CCx_ENABLE 0x00000001U /*!< Input or output channel is enabled */
  736. #define TIM_CCx_DISABLE 0x00000000U /*!< Input or output channel is disabled */
  737. /**
  738. * @}
  739. */
  740. /**
  741. * @}
  742. */
  743. /* End of exported constants -------------------------------------------------*/
  744. /* Exported macros -----------------------------------------------------------*/
  745. /** @defgroup TIM_Exported_Macros TIM Exported Macros
  746. * @{
  747. */
  748. /** @brief Reset TIM handle state.
  749. * @param __HANDLE__ TIM handle.
  750. * @retval None
  751. */
  752. #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
  753. #define __HAL_TIM_RESET_HANDLE_STATE(__HANDLE__) do { \
  754. (__HANDLE__)->State = HAL_TIM_STATE_RESET; \
  755. (__HANDLE__)->ChannelState[0] = HAL_TIM_CHANNEL_STATE_RESET; \
  756. (__HANDLE__)->ChannelState[1] = HAL_TIM_CHANNEL_STATE_RESET; \
  757. (__HANDLE__)->ChannelState[2] = HAL_TIM_CHANNEL_STATE_RESET; \
  758. (__HANDLE__)->ChannelState[3] = HAL_TIM_CHANNEL_STATE_RESET; \
  759. (__HANDLE__)->DMABurstState = HAL_DMA_BURST_STATE_RESET; \
  760. (__HANDLE__)->Base_MspInitCallback = NULL; \
  761. (__HANDLE__)->Base_MspDeInitCallback = NULL; \
  762. (__HANDLE__)->IC_MspInitCallback = NULL; \
  763. (__HANDLE__)->IC_MspDeInitCallback = NULL; \
  764. (__HANDLE__)->OC_MspInitCallback = NULL; \
  765. (__HANDLE__)->OC_MspDeInitCallback = NULL; \
  766. (__HANDLE__)->PWM_MspInitCallback = NULL; \
  767. (__HANDLE__)->PWM_MspDeInitCallback = NULL; \
  768. (__HANDLE__)->OnePulse_MspInitCallback = NULL; \
  769. (__HANDLE__)->OnePulse_MspDeInitCallback = NULL; \
  770. (__HANDLE__)->Encoder_MspInitCallback = NULL; \
  771. (__HANDLE__)->Encoder_MspDeInitCallback = NULL; \
  772. } while(0)
  773. #else
  774. #define __HAL_TIM_RESET_HANDLE_STATE(__HANDLE__) do { \
  775. (__HANDLE__)->State = HAL_TIM_STATE_RESET; \
  776. (__HANDLE__)->ChannelState[0] = HAL_TIM_CHANNEL_STATE_RESET; \
  777. (__HANDLE__)->ChannelState[1] = HAL_TIM_CHANNEL_STATE_RESET; \
  778. (__HANDLE__)->ChannelState[2] = HAL_TIM_CHANNEL_STATE_RESET; \
  779. (__HANDLE__)->ChannelState[3] = HAL_TIM_CHANNEL_STATE_RESET; \
  780. (__HANDLE__)->DMABurstState = HAL_DMA_BURST_STATE_RESET; \
  781. } while(0)
  782. #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
  783. /**
  784. * @brief Enable the TIM peripheral.
  785. * @param __HANDLE__ TIM handle
  786. * @retval None
  787. */
  788. #define __HAL_TIM_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1|=(TIM_CR1_CEN))
  789. /**
  790. * @brief Disable the TIM peripheral.
  791. * @param __HANDLE__ TIM handle
  792. * @retval None
  793. */
  794. #define __HAL_TIM_DISABLE(__HANDLE__) \
  795. do { \
  796. if (((__HANDLE__)->Instance->CCER & TIM_CCER_CCxE_MASK) == 0UL) \
  797. { \
  798. (__HANDLE__)->Instance->CR1 &= ~(TIM_CR1_CEN); \
  799. } \
  800. } while(0)
  801. /** @brief Enable the specified TIM interrupt.
  802. * @param __HANDLE__ specifies the TIM Handle.
  803. * @param __INTERRUPT__ specifies the TIM interrupt source to enable.
  804. * This parameter can be one of the following values:
  805. * @arg TIM_IT_UPDATE: Update interrupt
  806. * @arg TIM_IT_CC1: Capture/Compare 1 interrupt
  807. * @arg TIM_IT_CC2: Capture/Compare 2 interrupt
  808. * @arg TIM_IT_CC3: Capture/Compare 3 interrupt
  809. * @arg TIM_IT_CC4: Capture/Compare 4 interrupt
  810. * @arg TIM_IT_TRIGGER: Trigger interrupt
  811. * @retval None
  812. */
  813. #define __HAL_TIM_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->DIER |= (__INTERRUPT__))
  814. /** @brief Disable the specified TIM interrupt.
  815. * @param __HANDLE__ specifies the TIM Handle.
  816. * @param __INTERRUPT__ specifies the TIM interrupt source to disable.
  817. * This parameter can be one of the following values:
  818. * @arg TIM_IT_UPDATE: Update interrupt
  819. * @arg TIM_IT_CC1: Capture/Compare 1 interrupt
  820. * @arg TIM_IT_CC2: Capture/Compare 2 interrupt
  821. * @arg TIM_IT_CC3: Capture/Compare 3 interrupt
  822. * @arg TIM_IT_CC4: Capture/Compare 4 interrupt
  823. * @arg TIM_IT_TRIGGER: Trigger interrupt
  824. * @retval None
  825. */
  826. #define __HAL_TIM_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->DIER &= ~(__INTERRUPT__))
  827. /** @brief Enable the specified DMA request.
  828. * @param __HANDLE__ specifies the TIM Handle.
  829. * @param __DMA__ specifies the TIM DMA request to enable.
  830. * This parameter can be one of the following values:
  831. * @arg TIM_DMA_UPDATE: Update DMA request
  832. * @arg TIM_DMA_CC1: Capture/Compare 1 DMA request
  833. * @arg TIM_DMA_CC2: Capture/Compare 2 DMA request
  834. * @arg TIM_DMA_CC3: Capture/Compare 3 DMA request
  835. * @arg TIM_DMA_CC4: Capture/Compare 4 DMA request
  836. * @arg TIM_DMA_TRIGGER: Trigger DMA request
  837. * @retval None
  838. */
  839. #define __HAL_TIM_ENABLE_DMA(__HANDLE__, __DMA__) ((__HANDLE__)->Instance->DIER |= (__DMA__))
  840. /** @brief Disable the specified DMA request.
  841. * @param __HANDLE__ specifies the TIM Handle.
  842. * @param __DMA__ specifies the TIM DMA request to disable.
  843. * This parameter can be one of the following values:
  844. * @arg TIM_DMA_UPDATE: Update DMA request
  845. * @arg TIM_DMA_CC1: Capture/Compare 1 DMA request
  846. * @arg TIM_DMA_CC2: Capture/Compare 2 DMA request
  847. * @arg TIM_DMA_CC3: Capture/Compare 3 DMA request
  848. * @arg TIM_DMA_CC4: Capture/Compare 4 DMA request
  849. * @arg TIM_DMA_TRIGGER: Trigger DMA request
  850. * @retval None
  851. */
  852. #define __HAL_TIM_DISABLE_DMA(__HANDLE__, __DMA__) ((__HANDLE__)->Instance->DIER &= ~(__DMA__))
  853. /** @brief Check whether the specified TIM interrupt flag is set or not.
  854. * @param __HANDLE__ specifies the TIM Handle.
  855. * @param __FLAG__ specifies the TIM interrupt flag to check.
  856. * This parameter can be one of the following values:
  857. * @arg TIM_FLAG_UPDATE: Update interrupt flag
  858. * @arg TIM_FLAG_CC1: Capture/Compare 1 interrupt flag
  859. * @arg TIM_FLAG_CC2: Capture/Compare 2 interrupt flag
  860. * @arg TIM_FLAG_CC3: Capture/Compare 3 interrupt flag
  861. * @arg TIM_FLAG_CC4: Capture/Compare 4 interrupt flag
  862. * @arg TIM_FLAG_TRIGGER: Trigger interrupt flag
  863. * @arg TIM_FLAG_CC1OF: Capture/Compare 1 overcapture flag
  864. * @arg TIM_FLAG_CC2OF: Capture/Compare 2 overcapture flag
  865. * @arg TIM_FLAG_CC3OF: Capture/Compare 3 overcapture flag
  866. * @arg TIM_FLAG_CC4OF: Capture/Compare 4 overcapture flag
  867. * @retval The new state of __FLAG__ (TRUE or FALSE).
  868. */
  869. #define __HAL_TIM_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR &(__FLAG__)) == (__FLAG__))
  870. /** @brief Clear the specified TIM interrupt flag.
  871. * @param __HANDLE__ specifies the TIM Handle.
  872. * @param __FLAG__ specifies the TIM interrupt flag to clear.
  873. * This parameter can be one of the following values:
  874. * @arg TIM_FLAG_UPDATE: Update interrupt flag
  875. * @arg TIM_FLAG_CC1: Capture/Compare 1 interrupt flag
  876. * @arg TIM_FLAG_CC2: Capture/Compare 2 interrupt flag
  877. * @arg TIM_FLAG_CC3: Capture/Compare 3 interrupt flag
  878. * @arg TIM_FLAG_CC4: Capture/Compare 4 interrupt flag
  879. * @arg TIM_FLAG_TRIGGER: Trigger interrupt flag
  880. * @arg TIM_FLAG_CC1OF: Capture/Compare 1 overcapture flag
  881. * @arg TIM_FLAG_CC2OF: Capture/Compare 2 overcapture flag
  882. * @arg TIM_FLAG_CC3OF: Capture/Compare 3 overcapture flag
  883. * @arg TIM_FLAG_CC4OF: Capture/Compare 4 overcapture flag
  884. * @retval The new state of __FLAG__ (TRUE or FALSE).
  885. */
  886. #define __HAL_TIM_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->SR = ~(__FLAG__))
  887. /**
  888. * @brief Check whether the specified TIM interrupt source is enabled or not.
  889. * @param __HANDLE__ TIM handle
  890. * @param __INTERRUPT__ specifies the TIM interrupt source to check.
  891. * This parameter can be one of the following values:
  892. * @arg TIM_IT_UPDATE: Update interrupt
  893. * @arg TIM_IT_CC1: Capture/Compare 1 interrupt
  894. * @arg TIM_IT_CC2: Capture/Compare 2 interrupt
  895. * @arg TIM_IT_CC3: Capture/Compare 3 interrupt
  896. * @arg TIM_IT_CC4: Capture/Compare 4 interrupt
  897. * @arg TIM_IT_TRIGGER: Trigger interrupt
  898. * @retval The state of TIM_IT (SET or RESET).
  899. */
  900. #define __HAL_TIM_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->DIER & (__INTERRUPT__)) \
  901. == (__INTERRUPT__)) ? SET : RESET)
  902. /** @brief Clear the TIM interrupt pending bits.
  903. * @param __HANDLE__ TIM handle
  904. * @param __INTERRUPT__ specifies the interrupt pending bit to clear.
  905. * This parameter can be one of the following values:
  906. * @arg TIM_IT_UPDATE: Update interrupt
  907. * @arg TIM_IT_CC1: Capture/Compare 1 interrupt
  908. * @arg TIM_IT_CC2: Capture/Compare 2 interrupt
  909. * @arg TIM_IT_CC3: Capture/Compare 3 interrupt
  910. * @arg TIM_IT_CC4: Capture/Compare 4 interrupt
  911. * @arg TIM_IT_TRIGGER: Trigger interrupt
  912. * @retval None
  913. */
  914. #define __HAL_TIM_CLEAR_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->SR = ~(__INTERRUPT__))
  915. /**
  916. * @brief Indicates whether or not the TIM Counter is used as downcounter.
  917. * @param __HANDLE__ TIM handle.
  918. * @retval False (Counter used as upcounter) or True (Counter used as downcounter)
  919. * @note This macro is particularly useful to get the counting mode when the timer operates in Center-aligned mode or Encoder
  920. mode.
  921. */
  922. #define __HAL_TIM_IS_TIM_COUNTING_DOWN(__HANDLE__) (((__HANDLE__)->Instance->CR1 &(TIM_CR1_DIR)) == (TIM_CR1_DIR))
  923. /**
  924. * @brief Set the TIM Prescaler on runtime.
  925. * @param __HANDLE__ TIM handle.
  926. * @param __PRESC__ specifies the Prescaler new value.
  927. * @retval None
  928. */
  929. #define __HAL_TIM_SET_PRESCALER(__HANDLE__, __PRESC__) ((__HANDLE__)->Instance->PSC = (__PRESC__))
  930. /**
  931. * @brief Set the TIM Counter Register value on runtime.
  932. * @param __HANDLE__ TIM handle.
  933. * @param __COUNTER__ specifies the Counter register new value.
  934. * @retval None
  935. */
  936. #define __HAL_TIM_SET_COUNTER(__HANDLE__, __COUNTER__) ((__HANDLE__)->Instance->CNT = (__COUNTER__))
  937. /**
  938. * @brief Get the TIM Counter Register value on runtime.
  939. * @param __HANDLE__ TIM handle.
  940. * @retval 16-bit or 32-bit value of the timer counter register (TIMx_CNT)
  941. */
  942. #define __HAL_TIM_GET_COUNTER(__HANDLE__) ((__HANDLE__)->Instance->CNT)
  943. /**
  944. * @brief Set the TIM Autoreload Register value on runtime without calling another time any Init function.
  945. * @param __HANDLE__ TIM handle.
  946. * @param __AUTORELOAD__ specifies the Counter register new value.
  947. * @retval None
  948. */
  949. #define __HAL_TIM_SET_AUTORELOAD(__HANDLE__, __AUTORELOAD__) \
  950. do{ \
  951. (__HANDLE__)->Instance->ARR = (__AUTORELOAD__); \
  952. (__HANDLE__)->Init.Period = (__AUTORELOAD__); \
  953. } while(0)
  954. /**
  955. * @brief Get the TIM Autoreload Register value on runtime.
  956. * @param __HANDLE__ TIM handle.
  957. * @retval 16-bit or 32-bit value of the timer auto-reload register(TIMx_ARR)
  958. */
  959. #define __HAL_TIM_GET_AUTORELOAD(__HANDLE__) ((__HANDLE__)->Instance->ARR)
  960. /**
  961. * @brief Set the TIM Clock Division value on runtime without calling another time any Init function.
  962. * @param __HANDLE__ TIM handle.
  963. * @param __CKD__ specifies the clock division value.
  964. * This parameter can be one of the following value:
  965. * @arg TIM_CLOCKDIVISION_DIV1: tDTS=tCK_INT
  966. * @arg TIM_CLOCKDIVISION_DIV2: tDTS=2*tCK_INT
  967. * @arg TIM_CLOCKDIVISION_DIV4: tDTS=4*tCK_INT
  968. * @retval None
  969. */
  970. #define __HAL_TIM_SET_CLOCKDIVISION(__HANDLE__, __CKD__) \
  971. do{ \
  972. (__HANDLE__)->Instance->CR1 &= (~TIM_CR1_CKD); \
  973. (__HANDLE__)->Instance->CR1 |= (__CKD__); \
  974. (__HANDLE__)->Init.ClockDivision = (__CKD__); \
  975. } while(0)
  976. /**
  977. * @brief Get the TIM Clock Division value on runtime.
  978. * @param __HANDLE__ TIM handle.
  979. * @retval The clock division can be one of the following values:
  980. * @arg TIM_CLOCKDIVISION_DIV1: tDTS=tCK_INT
  981. * @arg TIM_CLOCKDIVISION_DIV2: tDTS=2*tCK_INT
  982. * @arg TIM_CLOCKDIVISION_DIV4: tDTS=4*tCK_INT
  983. */
  984. #define __HAL_TIM_GET_CLOCKDIVISION(__HANDLE__) ((__HANDLE__)->Instance->CR1 & TIM_CR1_CKD)
  985. /**
  986. * @brief Set the TIM Input Capture prescaler on runtime without calling another time HAL_TIM_IC_ConfigChannel() function.
  987. * @param __HANDLE__ TIM handle.
  988. * @param __CHANNEL__ TIM Channels to be configured.
  989. * This parameter can be one of the following values:
  990. * @arg TIM_CHANNEL_1: TIM Channel 1 selected
  991. * @arg TIM_CHANNEL_2: TIM Channel 2 selected
  992. * @arg TIM_CHANNEL_3: TIM Channel 3 selected
  993. * @arg TIM_CHANNEL_4: TIM Channel 4 selected
  994. * @param __ICPSC__ specifies the Input Capture4 prescaler new value.
  995. * This parameter can be one of the following values:
  996. * @arg TIM_ICPSC_DIV1: no prescaler
  997. * @arg TIM_ICPSC_DIV2: capture is done once every 2 events
  998. * @arg TIM_ICPSC_DIV4: capture is done once every 4 events
  999. * @arg TIM_ICPSC_DIV8: capture is done once every 8 events
  1000. * @retval None
  1001. */
  1002. #define __HAL_TIM_SET_ICPRESCALER(__HANDLE__, __CHANNEL__, __ICPSC__) \
  1003. do{ \
  1004. TIM_RESET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__)); \
  1005. TIM_SET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__), (__ICPSC__)); \
  1006. } while(0)
  1007. /**
  1008. * @brief Get the TIM Input Capture prescaler on runtime.
  1009. * @param __HANDLE__ TIM handle.
  1010. * @param __CHANNEL__ TIM Channels to be configured.
  1011. * This parameter can be one of the following values:
  1012. * @arg TIM_CHANNEL_1: get input capture 1 prescaler value
  1013. * @arg TIM_CHANNEL_2: get input capture 2 prescaler value
  1014. * @arg TIM_CHANNEL_3: get input capture 3 prescaler value
  1015. * @arg TIM_CHANNEL_4: get input capture 4 prescaler value
  1016. * @retval The input capture prescaler can be one of the following values:
  1017. * @arg TIM_ICPSC_DIV1: no prescaler
  1018. * @arg TIM_ICPSC_DIV2: capture is done once every 2 events
  1019. * @arg TIM_ICPSC_DIV4: capture is done once every 4 events
  1020. * @arg TIM_ICPSC_DIV8: capture is done once every 8 events
  1021. */
  1022. #define __HAL_TIM_GET_ICPRESCALER(__HANDLE__, __CHANNEL__) \
  1023. (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 & TIM_CCMR1_IC1PSC) :\
  1024. ((__CHANNEL__) == TIM_CHANNEL_2) ? (((__HANDLE__)->Instance->CCMR1 & TIM_CCMR1_IC2PSC) >> 8U) :\
  1025. ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 & TIM_CCMR2_IC3PSC) :\
  1026. (((__HANDLE__)->Instance->CCMR2 & TIM_CCMR2_IC4PSC)) >> 8U)
  1027. /**
  1028. * @brief Set the TIM Capture Compare Register value on runtime without calling another time ConfigChannel function.
  1029. * @param __HANDLE__ TIM handle.
  1030. * @param __CHANNEL__ TIM Channels to be configured.
  1031. * This parameter can be one of the following values:
  1032. * @arg TIM_CHANNEL_1: TIM Channel 1 selected
  1033. * @arg TIM_CHANNEL_2: TIM Channel 2 selected
  1034. * @arg TIM_CHANNEL_3: TIM Channel 3 selected
  1035. * @arg TIM_CHANNEL_4: TIM Channel 4 selected
  1036. * @param __COMPARE__ specifies the Capture Compare register new value.
  1037. * @retval None
  1038. */
  1039. #define __HAL_TIM_SET_COMPARE(__HANDLE__, __CHANNEL__, __COMPARE__) \
  1040. (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1 = (__COMPARE__)) :\
  1041. ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2 = (__COMPARE__)) :\
  1042. ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3 = (__COMPARE__)) :\
  1043. ((__HANDLE__)->Instance->CCR4 = (__COMPARE__)))
  1044. /**
  1045. * @brief Get the TIM Capture Compare Register value on runtime.
  1046. * @param __HANDLE__ TIM handle.
  1047. * @param __CHANNEL__ TIM Channel associated with the capture compare register
  1048. * This parameter can be one of the following values:
  1049. * @arg TIM_CHANNEL_1: get capture/compare 1 register value
  1050. * @arg TIM_CHANNEL_2: get capture/compare 2 register value
  1051. * @arg TIM_CHANNEL_3: get capture/compare 3 register value
  1052. * @arg TIM_CHANNEL_4: get capture/compare 4 register value
  1053. * @retval 16-bit or 32-bit value of the capture/compare register (TIMx_CCRy)
  1054. */
  1055. #define __HAL_TIM_GET_COMPARE(__HANDLE__, __CHANNEL__) \
  1056. (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1) :\
  1057. ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2) :\
  1058. ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3) :\
  1059. ((__HANDLE__)->Instance->CCR4))
  1060. /**
  1061. * @brief Set the TIM Output compare preload.
  1062. * @param __HANDLE__ TIM handle.
  1063. * @param __CHANNEL__ TIM Channels to be configured.
  1064. * This parameter can be one of the following values:
  1065. * @arg TIM_CHANNEL_1: TIM Channel 1 selected
  1066. * @arg TIM_CHANNEL_2: TIM Channel 2 selected
  1067. * @arg TIM_CHANNEL_3: TIM Channel 3 selected
  1068. * @arg TIM_CHANNEL_4: TIM Channel 4 selected
  1069. * @retval None
  1070. */
  1071. #define __HAL_TIM_ENABLE_OCxPRELOAD(__HANDLE__, __CHANNEL__) \
  1072. (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC1PE) :\
  1073. ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC2PE) :\
  1074. ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC3PE) :\
  1075. ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC4PE))
  1076. /**
  1077. * @brief Reset the TIM Output compare preload.
  1078. * @param __HANDLE__ TIM handle.
  1079. * @param __CHANNEL__ TIM Channels to be configured.
  1080. * This parameter can be one of the following values:
  1081. * @arg TIM_CHANNEL_1: TIM Channel 1 selected
  1082. * @arg TIM_CHANNEL_2: TIM Channel 2 selected
  1083. * @arg TIM_CHANNEL_3: TIM Channel 3 selected
  1084. * @arg TIM_CHANNEL_4: TIM Channel 4 selected
  1085. * @retval None
  1086. */
  1087. #define __HAL_TIM_DISABLE_OCxPRELOAD(__HANDLE__, __CHANNEL__) \
  1088. (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC1PE) :\
  1089. ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC2PE) :\
  1090. ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC3PE) :\
  1091. ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC4PE))
  1092. /**
  1093. * @brief Enable fast mode for a given channel.
  1094. * @param __HANDLE__ TIM handle.
  1095. * @param __CHANNEL__ TIM Channels to be configured.
  1096. * This parameter can be one of the following values:
  1097. * @arg TIM_CHANNEL_1: TIM Channel 1 selected
  1098. * @arg TIM_CHANNEL_2: TIM Channel 2 selected
  1099. * @arg TIM_CHANNEL_3: TIM Channel 3 selected
  1100. * @arg TIM_CHANNEL_4: TIM Channel 4 selected
  1101. * @note When fast mode is enabled an active edge on the trigger input acts
  1102. * like a compare match on CCx output. Delay to sample the trigger
  1103. * input and to activate CCx output is reduced to 3 clock cycles.
  1104. * @note Fast mode acts only if the channel is configured in PWM1 or PWM2 mode.
  1105. * @retval None
  1106. */
  1107. #define __HAL_TIM_ENABLE_OCxFAST(__HANDLE__, __CHANNEL__) \
  1108. (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC1FE) :\
  1109. ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC2FE) :\
  1110. ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC3FE) :\
  1111. ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC4FE))
  1112. /**
  1113. * @brief Disable fast mode for a given channel.
  1114. * @param __HANDLE__ TIM handle.
  1115. * @param __CHANNEL__ TIM Channels to be configured.
  1116. * This parameter can be one of the following values:
  1117. * @arg TIM_CHANNEL_1: TIM Channel 1 selected
  1118. * @arg TIM_CHANNEL_2: TIM Channel 2 selected
  1119. * @arg TIM_CHANNEL_3: TIM Channel 3 selected
  1120. * @arg TIM_CHANNEL_4: TIM Channel 4 selected
  1121. * @note When fast mode is disabled CCx output behaves normally depending
  1122. * on counter and CCRx values even when the trigger is ON. The minimum
  1123. * delay to activate CCx output when an active edge occurs on the
  1124. * trigger input is 5 clock cycles.
  1125. * @retval None
  1126. */
  1127. #define __HAL_TIM_DISABLE_OCxFAST(__HANDLE__, __CHANNEL__) \
  1128. (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE) :\
  1129. ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE) :\
  1130. ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE) :\
  1131. ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE))
  1132. /**
  1133. * @brief Set the Update Request Source (URS) bit of the TIMx_CR1 register.
  1134. * @param __HANDLE__ TIM handle.
  1135. * @note When the URS bit of the TIMx_CR1 register is set, only counter
  1136. * overflow/underflow generates an update interrupt or DMA request (if
  1137. * enabled)
  1138. * @retval None
  1139. */
  1140. #define __HAL_TIM_URS_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1|= TIM_CR1_URS)
  1141. /**
  1142. * @brief Reset the Update Request Source (URS) bit of the TIMx_CR1 register.
  1143. * @param __HANDLE__ TIM handle.
  1144. * @note When the URS bit of the TIMx_CR1 register is reset, any of the
  1145. * following events generate an update interrupt or DMA request (if
  1146. * enabled):
  1147. * _ Counter overflow underflow
  1148. * _ Setting the UG bit
  1149. * _ Update generation through the slave mode controller
  1150. * @retval None
  1151. */
  1152. #define __HAL_TIM_URS_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1&=~TIM_CR1_URS)
  1153. /**
  1154. * @brief Set the TIM Capture x input polarity on runtime.
  1155. * @param __HANDLE__ TIM handle.
  1156. * @param __CHANNEL__ TIM Channels to be configured.
  1157. * This parameter can be one of the following values:
  1158. * @arg TIM_CHANNEL_1: TIM Channel 1 selected
  1159. * @arg TIM_CHANNEL_2: TIM Channel 2 selected
  1160. * @arg TIM_CHANNEL_3: TIM Channel 3 selected
  1161. * @arg TIM_CHANNEL_4: TIM Channel 4 selected
  1162. * @param __POLARITY__ Polarity for TIx source
  1163. * @arg TIM_INPUTCHANNELPOLARITY_RISING: Rising Edge
  1164. * @arg TIM_INPUTCHANNELPOLARITY_FALLING: Falling Edge
  1165. * @arg TIM_INPUTCHANNELPOLARITY_BOTHEDGE: Rising and Falling Edge
  1166. * @retval None
  1167. */
  1168. #define __HAL_TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__) \
  1169. do{ \
  1170. TIM_RESET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__)); \
  1171. TIM_SET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__), (__POLARITY__)); \
  1172. }while(0)
  1173. /**
  1174. * @}
  1175. */
  1176. /* End of exported macros ----------------------------------------------------*/
  1177. /* Private constants ---------------------------------------------------------*/
  1178. /** @defgroup TIM_Private_Constants TIM Private Constants
  1179. * @{
  1180. */
  1181. /* The counter of a timer instance is disabled only if all the CCx and CCxN
  1182. channels have been disabled */
  1183. #define TIM_CCER_CCxE_MASK ((uint32_t)(TIM_CCER_CC1E | TIM_CCER_CC2E | TIM_CCER_CC3E | TIM_CCER_CC4E))
  1184. /**
  1185. * @}
  1186. */
  1187. /* End of private constants --------------------------------------------------*/
  1188. /* Private macros ------------------------------------------------------------*/
  1189. /** @defgroup TIM_Private_Macros TIM Private Macros
  1190. * @{
  1191. */
  1192. #define IS_TIM_CLEARINPUT_SOURCE(__MODE__) (((__MODE__) == TIM_CLEARINPUTSOURCE_NONE) || \
  1193. ((__MODE__) == TIM_CLEARINPUTSOURCE_ETR) || \
  1194. ((__MODE__) == TIM_CLEARINPUTSOURCE_OCREFCLR))
  1195. #define IS_TIM_DMA_BASE(__BASE__) (((__BASE__) == TIM_DMABASE_CR1) || \
  1196. ((__BASE__) == TIM_DMABASE_CR2) || \
  1197. ((__BASE__) == TIM_DMABASE_SMCR) || \
  1198. ((__BASE__) == TIM_DMABASE_DIER) || \
  1199. ((__BASE__) == TIM_DMABASE_SR) || \
  1200. ((__BASE__) == TIM_DMABASE_EGR) || \
  1201. ((__BASE__) == TIM_DMABASE_CCMR1) || \
  1202. ((__BASE__) == TIM_DMABASE_CCMR2) || \
  1203. ((__BASE__) == TIM_DMABASE_CCER) || \
  1204. ((__BASE__) == TIM_DMABASE_CNT) || \
  1205. ((__BASE__) == TIM_DMABASE_PSC) || \
  1206. ((__BASE__) == TIM_DMABASE_ARR) || \
  1207. ((__BASE__) == TIM_DMABASE_CCR1) || \
  1208. ((__BASE__) == TIM_DMABASE_CCR2) || \
  1209. ((__BASE__) == TIM_DMABASE_CCR3) || \
  1210. ((__BASE__) == TIM_DMABASE_CCR4) || \
  1211. ((__BASE__) == TIM_DMABASE_OR))
  1212. #define IS_TIM_EVENT_SOURCE(__SOURCE__) ((((__SOURCE__) & 0xFFFFFFA0U) == 0x00000000U) && ((__SOURCE__) != 0x00000000U))
  1213. #define IS_TIM_COUNTER_MODE(__MODE__) (((__MODE__) == TIM_COUNTERMODE_UP) || \
  1214. ((__MODE__) == TIM_COUNTERMODE_DOWN) || \
  1215. ((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED1) || \
  1216. ((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED2) || \
  1217. ((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED3))
  1218. #define IS_TIM_CLOCKDIVISION_DIV(__DIV__) (((__DIV__) == TIM_CLOCKDIVISION_DIV1) || \
  1219. ((__DIV__) == TIM_CLOCKDIVISION_DIV2) || \
  1220. ((__DIV__) == TIM_CLOCKDIVISION_DIV4))
  1221. #define IS_TIM_AUTORELOAD_PRELOAD(PRELOAD) (((PRELOAD) == TIM_AUTORELOAD_PRELOAD_DISABLE) || \
  1222. ((PRELOAD) == TIM_AUTORELOAD_PRELOAD_ENABLE))
  1223. #define IS_TIM_FAST_STATE(__STATE__) (((__STATE__) == TIM_OCFAST_DISABLE) || \
  1224. ((__STATE__) == TIM_OCFAST_ENABLE))
  1225. #define IS_TIM_OC_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_OCPOLARITY_HIGH) || \
  1226. ((__POLARITY__) == TIM_OCPOLARITY_LOW))
  1227. #define IS_TIM_ENCODERINPUT_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_ENCODERINPUTPOLARITY_RISING) || \
  1228. ((__POLARITY__) == TIM_ENCODERINPUTPOLARITY_FALLING))
  1229. #define IS_TIM_IC_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_ICPOLARITY_RISING) || \
  1230. ((__POLARITY__) == TIM_ICPOLARITY_FALLING) || \
  1231. ((__POLARITY__) == TIM_ICPOLARITY_BOTHEDGE))
  1232. #define IS_TIM_IC_SELECTION(__SELECTION__) (((__SELECTION__) == TIM_ICSELECTION_DIRECTTI) || \
  1233. ((__SELECTION__) == TIM_ICSELECTION_INDIRECTTI) || \
  1234. ((__SELECTION__) == TIM_ICSELECTION_TRC))
  1235. #define IS_TIM_IC_PRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_ICPSC_DIV1) || \
  1236. ((__PRESCALER__) == TIM_ICPSC_DIV2) || \
  1237. ((__PRESCALER__) == TIM_ICPSC_DIV4) || \
  1238. ((__PRESCALER__) == TIM_ICPSC_DIV8))
  1239. #define IS_TIM_OPM_MODE(__MODE__) (((__MODE__) == TIM_OPMODE_SINGLE) || \
  1240. ((__MODE__) == TIM_OPMODE_REPETITIVE))
  1241. #define IS_TIM_ENCODER_MODE(__MODE__) (((__MODE__) == TIM_ENCODERMODE_TI1) || \
  1242. ((__MODE__) == TIM_ENCODERMODE_TI2) || \
  1243. ((__MODE__) == TIM_ENCODERMODE_TI12))
  1244. #define IS_TIM_DMA_SOURCE(__SOURCE__) ((((__SOURCE__) & 0xFFFFA0FFU) == 0x00000000U) && ((__SOURCE__) != 0x00000000U))
  1245. #define IS_TIM_CHANNELS(__CHANNEL__) (((__CHANNEL__) == TIM_CHANNEL_1) || \
  1246. ((__CHANNEL__) == TIM_CHANNEL_2) || \
  1247. ((__CHANNEL__) == TIM_CHANNEL_3) || \
  1248. ((__CHANNEL__) == TIM_CHANNEL_4) || \
  1249. ((__CHANNEL__) == TIM_CHANNEL_ALL))
  1250. #define IS_TIM_OPM_CHANNELS(__CHANNEL__) (((__CHANNEL__) == TIM_CHANNEL_1) || \
  1251. ((__CHANNEL__) == TIM_CHANNEL_2))
  1252. #define IS_TIM_CLOCKSOURCE(__CLOCK__) (((__CLOCK__) == TIM_CLOCKSOURCE_INTERNAL) || \
  1253. ((__CLOCK__) == TIM_CLOCKSOURCE_ETRMODE2) || \
  1254. ((__CLOCK__) == TIM_CLOCKSOURCE_ITR0) || \
  1255. ((__CLOCK__) == TIM_CLOCKSOURCE_ITR1) || \
  1256. ((__CLOCK__) == TIM_CLOCKSOURCE_ITR2) || \
  1257. ((__CLOCK__) == TIM_CLOCKSOURCE_ITR3) || \
  1258. ((__CLOCK__) == TIM_CLOCKSOURCE_TI1ED) || \
  1259. ((__CLOCK__) == TIM_CLOCKSOURCE_TI1) || \
  1260. ((__CLOCK__) == TIM_CLOCKSOURCE_TI2) || \
  1261. ((__CLOCK__) == TIM_CLOCKSOURCE_ETRMODE1))
  1262. #define IS_TIM_CLOCKPOLARITY(__POLARITY__) (((__POLARITY__) == TIM_CLOCKPOLARITY_INVERTED) || \
  1263. ((__POLARITY__) == TIM_CLOCKPOLARITY_NONINVERTED) || \
  1264. ((__POLARITY__) == TIM_CLOCKPOLARITY_RISING) || \
  1265. ((__POLARITY__) == TIM_CLOCKPOLARITY_FALLING) || \
  1266. ((__POLARITY__) == TIM_CLOCKPOLARITY_BOTHEDGE))
  1267. #define IS_TIM_CLOCKPRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV1) || \
  1268. ((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV2) || \
  1269. ((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV4) || \
  1270. ((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV8))
  1271. #define IS_TIM_CLOCKFILTER(__ICFILTER__) ((__ICFILTER__) <= 0xFU)
  1272. #define IS_TIM_CLEARINPUT_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_CLEARINPUTPOLARITY_INVERTED) || \
  1273. ((__POLARITY__) == TIM_CLEARINPUTPOLARITY_NONINVERTED))
  1274. #define IS_TIM_CLEARINPUT_PRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV1) || \
  1275. ((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV2) || \
  1276. ((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV4) || \
  1277. ((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV8))
  1278. #define IS_TIM_CLEARINPUT_FILTER(__ICFILTER__) ((__ICFILTER__) <= 0xFU)
  1279. #define IS_TIM_TRGO_SOURCE(__SOURCE__) (((__SOURCE__) == TIM_TRGO_RESET) || \
  1280. ((__SOURCE__) == TIM_TRGO_ENABLE) || \
  1281. ((__SOURCE__) == TIM_TRGO_UPDATE) || \
  1282. ((__SOURCE__) == TIM_TRGO_OC1) || \
  1283. ((__SOURCE__) == TIM_TRGO_OC1REF) || \
  1284. ((__SOURCE__) == TIM_TRGO_OC2REF) || \
  1285. ((__SOURCE__) == TIM_TRGO_OC3REF) || \
  1286. ((__SOURCE__) == TIM_TRGO_OC4REF))
  1287. #define IS_TIM_MSM_STATE(__STATE__) (((__STATE__) == TIM_MASTERSLAVEMODE_ENABLE) || \
  1288. ((__STATE__) == TIM_MASTERSLAVEMODE_DISABLE))
  1289. #define IS_TIM_SLAVE_MODE(__MODE__) (((__MODE__) == TIM_SLAVEMODE_DISABLE) || \
  1290. ((__MODE__) == TIM_SLAVEMODE_RESET) || \
  1291. ((__MODE__) == TIM_SLAVEMODE_GATED) || \
  1292. ((__MODE__) == TIM_SLAVEMODE_TRIGGER) || \
  1293. ((__MODE__) == TIM_SLAVEMODE_EXTERNAL1))
  1294. #define IS_TIM_PWM_MODE(__MODE__) (((__MODE__) == TIM_OCMODE_PWM1) || \
  1295. ((__MODE__) == TIM_OCMODE_PWM2))
  1296. #define IS_TIM_OC_MODE(__MODE__) (((__MODE__) == TIM_OCMODE_TIMING) || \
  1297. ((__MODE__) == TIM_OCMODE_ACTIVE) || \
  1298. ((__MODE__) == TIM_OCMODE_INACTIVE) || \
  1299. ((__MODE__) == TIM_OCMODE_TOGGLE) || \
  1300. ((__MODE__) == TIM_OCMODE_FORCED_ACTIVE) || \
  1301. ((__MODE__) == TIM_OCMODE_FORCED_INACTIVE))
  1302. #define IS_TIM_TRIGGER_SELECTION(__SELECTION__) (((__SELECTION__) == TIM_TS_ITR0) || \
  1303. ((__SELECTION__) == TIM_TS_ITR1) || \
  1304. ((__SELECTION__) == TIM_TS_ITR2) || \
  1305. ((__SELECTION__) == TIM_TS_ITR3) || \
  1306. ((__SELECTION__) == TIM_TS_TI1F_ED) || \
  1307. ((__SELECTION__) == TIM_TS_TI1FP1) || \
  1308. ((__SELECTION__) == TIM_TS_TI2FP2) || \
  1309. ((__SELECTION__) == TIM_TS_ETRF))
  1310. #define IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(__SELECTION__) (((__SELECTION__) == TIM_TS_ITR0) || \
  1311. ((__SELECTION__) == TIM_TS_ITR1) || \
  1312. ((__SELECTION__) == TIM_TS_ITR2) || \
  1313. ((__SELECTION__) == TIM_TS_ITR3) || \
  1314. ((__SELECTION__) == TIM_TS_NONE))
  1315. #define IS_TIM_TRIGGERPOLARITY(__POLARITY__) (((__POLARITY__) == TIM_TRIGGERPOLARITY_INVERTED ) || \
  1316. ((__POLARITY__) == TIM_TRIGGERPOLARITY_NONINVERTED) || \
  1317. ((__POLARITY__) == TIM_TRIGGERPOLARITY_RISING ) || \
  1318. ((__POLARITY__) == TIM_TRIGGERPOLARITY_FALLING ) || \
  1319. ((__POLARITY__) == TIM_TRIGGERPOLARITY_BOTHEDGE ))
  1320. #define IS_TIM_TRIGGERPRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV1) || \
  1321. ((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV2) || \
  1322. ((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV4) || \
  1323. ((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV8))
  1324. #define IS_TIM_TRIGGERFILTER(__ICFILTER__) ((__ICFILTER__) <= 0xFU)
  1325. #define IS_TIM_TI1SELECTION(__TI1SELECTION__) (((__TI1SELECTION__) == TIM_TI1SELECTION_CH1) || \
  1326. ((__TI1SELECTION__) == TIM_TI1SELECTION_XORCOMBINATION))
  1327. #define IS_TIM_DMA_LENGTH(__LENGTH__) (((__LENGTH__) == TIM_DMABURSTLENGTH_1TRANSFER) || \
  1328. ((__LENGTH__) == TIM_DMABURSTLENGTH_2TRANSFERS) || \
  1329. ((__LENGTH__) == TIM_DMABURSTLENGTH_3TRANSFERS) || \
  1330. ((__LENGTH__) == TIM_DMABURSTLENGTH_4TRANSFERS) || \
  1331. ((__LENGTH__) == TIM_DMABURSTLENGTH_5TRANSFERS) || \
  1332. ((__LENGTH__) == TIM_DMABURSTLENGTH_6TRANSFERS) || \
  1333. ((__LENGTH__) == TIM_DMABURSTLENGTH_7TRANSFERS) || \
  1334. ((__LENGTH__) == TIM_DMABURSTLENGTH_8TRANSFERS) || \
  1335. ((__LENGTH__) == TIM_DMABURSTLENGTH_9TRANSFERS) || \
  1336. ((__LENGTH__) == TIM_DMABURSTLENGTH_10TRANSFERS) || \
  1337. ((__LENGTH__) == TIM_DMABURSTLENGTH_11TRANSFERS) || \
  1338. ((__LENGTH__) == TIM_DMABURSTLENGTH_12TRANSFERS) || \
  1339. ((__LENGTH__) == TIM_DMABURSTLENGTH_13TRANSFERS) || \
  1340. ((__LENGTH__) == TIM_DMABURSTLENGTH_14TRANSFERS) || \
  1341. ((__LENGTH__) == TIM_DMABURSTLENGTH_15TRANSFERS) || \
  1342. ((__LENGTH__) == TIM_DMABURSTLENGTH_16TRANSFERS) || \
  1343. ((__LENGTH__) == TIM_DMABURSTLENGTH_17TRANSFERS) || \
  1344. ((__LENGTH__) == TIM_DMABURSTLENGTH_18TRANSFERS))
  1345. #define IS_TIM_DMA_DATA_LENGTH(LENGTH) (((LENGTH) >= 0x1U) && ((LENGTH) < 0x10000U))
  1346. #define IS_TIM_IC_FILTER(__ICFILTER__) ((__ICFILTER__) <= 0xFU)
  1347. #define IS_TIM_SLAVEMODE_TRIGGER_ENABLED(__TRIGGER__) ((__TRIGGER__) == TIM_SLAVEMODE_TRIGGER)
  1348. #define TIM_SET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__, __ICPSC__) \
  1349. (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= (__ICPSC__)) :\
  1350. ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= ((__ICPSC__) << 8U)) :\
  1351. ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= (__ICPSC__)) :\
  1352. ((__HANDLE__)->Instance->CCMR2 |= ((__ICPSC__) << 8U)))
  1353. #define TIM_RESET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__) \
  1354. (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC) :\
  1355. ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_IC2PSC) :\
  1356. ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_IC3PSC) :\
  1357. ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_IC4PSC))
  1358. #define TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__) \
  1359. (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER |= (__POLARITY__)) :\
  1360. ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 4U)) :\
  1361. ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 8U)) :\
  1362. ((__HANDLE__)->Instance->CCER |= (((__POLARITY__) << 12U))))
  1363. #define TIM_RESET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__) \
  1364. (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP)) :\
  1365. ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP)) :\
  1366. ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC3P | TIM_CCER_CC3NP)) :\
  1367. ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC4P | TIM_CCER_CC4NP)))
  1368. #define TIM_CHANNEL_STATE_GET(__HANDLE__, __CHANNEL__)\
  1369. (((__CHANNEL__) == TIM_CHANNEL_1) ? (__HANDLE__)->ChannelState[0] :\
  1370. ((__CHANNEL__) == TIM_CHANNEL_2) ? (__HANDLE__)->ChannelState[1] :\
  1371. ((__CHANNEL__) == TIM_CHANNEL_3) ? (__HANDLE__)->ChannelState[2] :\
  1372. (__HANDLE__)->ChannelState[3])
  1373. #define TIM_CHANNEL_STATE_SET(__HANDLE__, __CHANNEL__, __CHANNEL_STATE__) \
  1374. (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->ChannelState[0] = (__CHANNEL_STATE__)) :\
  1375. ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->ChannelState[1] = (__CHANNEL_STATE__)) :\
  1376. ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->ChannelState[2] = (__CHANNEL_STATE__)) :\
  1377. ((__HANDLE__)->ChannelState[3] = (__CHANNEL_STATE__)))
  1378. #define TIM_CHANNEL_STATE_SET_ALL(__HANDLE__, __CHANNEL_STATE__) do { \
  1379. (__HANDLE__)->ChannelState[0] = (__CHANNEL_STATE__); \
  1380. (__HANDLE__)->ChannelState[1] = (__CHANNEL_STATE__); \
  1381. (__HANDLE__)->ChannelState[2] = (__CHANNEL_STATE__); \
  1382. (__HANDLE__)->ChannelState[3] = (__CHANNEL_STATE__); \
  1383. } while(0)
  1384. /**
  1385. * @}
  1386. */
  1387. /* End of private macros -----------------------------------------------------*/
  1388. /* Include TIM HAL Extended module */
  1389. #include "stm32l1xx_hal_tim_ex.h"
  1390. /* Exported functions --------------------------------------------------------*/
  1391. /** @addtogroup TIM_Exported_Functions TIM Exported Functions
  1392. * @{
  1393. */
  1394. /** @addtogroup TIM_Exported_Functions_Group1 TIM Time Base functions
  1395. * @brief Time Base functions
  1396. * @{
  1397. */
  1398. /* Time Base functions ********************************************************/
  1399. HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim);
  1400. HAL_StatusTypeDef HAL_TIM_Base_DeInit(TIM_HandleTypeDef *htim);
  1401. void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim);
  1402. void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef *htim);
  1403. /* Blocking mode: Polling */
  1404. HAL_StatusTypeDef HAL_TIM_Base_Start(TIM_HandleTypeDef *htim);
  1405. HAL_StatusTypeDef HAL_TIM_Base_Stop(TIM_HandleTypeDef *htim);
  1406. /* Non-Blocking mode: Interrupt */
  1407. HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim);
  1408. HAL_StatusTypeDef HAL_TIM_Base_Stop_IT(TIM_HandleTypeDef *htim);
  1409. /* Non-Blocking mode: DMA */
  1410. HAL_StatusTypeDef HAL_TIM_Base_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pData, uint16_t Length);
  1411. HAL_StatusTypeDef HAL_TIM_Base_Stop_DMA(TIM_HandleTypeDef *htim);
  1412. /**
  1413. * @}
  1414. */
  1415. /** @addtogroup TIM_Exported_Functions_Group2 TIM Output Compare functions
  1416. * @brief TIM Output Compare functions
  1417. * @{
  1418. */
  1419. /* Timer Output Compare functions *********************************************/
  1420. HAL_StatusTypeDef HAL_TIM_OC_Init(TIM_HandleTypeDef *htim);
  1421. HAL_StatusTypeDef HAL_TIM_OC_DeInit(TIM_HandleTypeDef *htim);
  1422. void HAL_TIM_OC_MspInit(TIM_HandleTypeDef *htim);
  1423. void HAL_TIM_OC_MspDeInit(TIM_HandleTypeDef *htim);
  1424. /* Blocking mode: Polling */
  1425. HAL_StatusTypeDef HAL_TIM_OC_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
  1426. HAL_StatusTypeDef HAL_TIM_OC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);
  1427. /* Non-Blocking mode: Interrupt */
  1428. HAL_StatusTypeDef HAL_TIM_OC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
  1429. HAL_StatusTypeDef HAL_TIM_OC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
  1430. /* Non-Blocking mode: DMA */
  1431. HAL_StatusTypeDef HAL_TIM_OC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length);
  1432. HAL_StatusTypeDef HAL_TIM_OC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);
  1433. /**
  1434. * @}
  1435. */
  1436. /** @addtogroup TIM_Exported_Functions_Group3 TIM PWM functions
  1437. * @brief TIM PWM functions
  1438. * @{
  1439. */
  1440. /* Timer PWM functions ********************************************************/
  1441. HAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim);
  1442. HAL_StatusTypeDef HAL_TIM_PWM_DeInit(TIM_HandleTypeDef *htim);
  1443. void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim);
  1444. void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef *htim);
  1445. /* Blocking mode: Polling */
  1446. HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
  1447. HAL_StatusTypeDef HAL_TIM_PWM_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);
  1448. /* Non-Blocking mode: Interrupt */
  1449. HAL_StatusTypeDef HAL_TIM_PWM_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
  1450. HAL_StatusTypeDef HAL_TIM_PWM_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
  1451. /* Non-Blocking mode: DMA */
  1452. HAL_StatusTypeDef HAL_TIM_PWM_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length);
  1453. HAL_StatusTypeDef HAL_TIM_PWM_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);
  1454. /**
  1455. * @}
  1456. */
  1457. /** @addtogroup TIM_Exported_Functions_Group4 TIM Input Capture functions
  1458. * @brief TIM Input Capture functions
  1459. * @{
  1460. */
  1461. /* Timer Input Capture functions **********************************************/
  1462. HAL_StatusTypeDef HAL_TIM_IC_Init(TIM_HandleTypeDef *htim);
  1463. HAL_StatusTypeDef HAL_TIM_IC_DeInit(TIM_HandleTypeDef *htim);
  1464. void HAL_TIM_IC_MspInit(TIM_HandleTypeDef *htim);
  1465. void HAL_TIM_IC_MspDeInit(TIM_HandleTypeDef *htim);
  1466. /* Blocking mode: Polling */
  1467. HAL_StatusTypeDef HAL_TIM_IC_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
  1468. HAL_StatusTypeDef HAL_TIM_IC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);
  1469. /* Non-Blocking mode: Interrupt */
  1470. HAL_StatusTypeDef HAL_TIM_IC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
  1471. HAL_StatusTypeDef HAL_TIM_IC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
  1472. /* Non-Blocking mode: DMA */
  1473. HAL_StatusTypeDef HAL_TIM_IC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length);
  1474. HAL_StatusTypeDef HAL_TIM_IC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);
  1475. /**
  1476. * @}
  1477. */
  1478. /** @addtogroup TIM_Exported_Functions_Group5 TIM One Pulse functions
  1479. * @brief TIM One Pulse functions
  1480. * @{
  1481. */
  1482. /* Timer One Pulse functions **************************************************/
  1483. HAL_StatusTypeDef HAL_TIM_OnePulse_Init(TIM_HandleTypeDef *htim, uint32_t OnePulseMode);
  1484. HAL_StatusTypeDef HAL_TIM_OnePulse_DeInit(TIM_HandleTypeDef *htim);
  1485. void HAL_TIM_OnePulse_MspInit(TIM_HandleTypeDef *htim);
  1486. void HAL_TIM_OnePulse_MspDeInit(TIM_HandleTypeDef *htim);
  1487. /* Blocking mode: Polling */
  1488. HAL_StatusTypeDef HAL_TIM_OnePulse_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel);
  1489. HAL_StatusTypeDef HAL_TIM_OnePulse_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel);
  1490. /* Non-Blocking mode: Interrupt */
  1491. HAL_StatusTypeDef HAL_TIM_OnePulse_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel);
  1492. HAL_StatusTypeDef HAL_TIM_OnePulse_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel);
  1493. /**
  1494. * @}
  1495. */
  1496. /** @addtogroup TIM_Exported_Functions_Group6 TIM Encoder functions
  1497. * @brief TIM Encoder functions
  1498. * @{
  1499. */
  1500. /* Timer Encoder functions ****************************************************/
  1501. HAL_StatusTypeDef HAL_TIM_Encoder_Init(TIM_HandleTypeDef *htim, TIM_Encoder_InitTypeDef *sConfig);
  1502. HAL_StatusTypeDef HAL_TIM_Encoder_DeInit(TIM_HandleTypeDef *htim);
  1503. void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef *htim);
  1504. void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef *htim);
  1505. /* Blocking mode: Polling */
  1506. HAL_StatusTypeDef HAL_TIM_Encoder_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
  1507. HAL_StatusTypeDef HAL_TIM_Encoder_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);
  1508. /* Non-Blocking mode: Interrupt */
  1509. HAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
  1510. HAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
  1511. /* Non-Blocking mode: DMA */
  1512. HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData1,
  1513. uint32_t *pData2, uint16_t Length);
  1514. HAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);
  1515. /**
  1516. * @}
  1517. */
  1518. /** @addtogroup TIM_Exported_Functions_Group7 TIM IRQ handler management
  1519. * @brief IRQ handler management
  1520. * @{
  1521. */
  1522. /* Interrupt Handler functions ***********************************************/
  1523. void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim);
  1524. /**
  1525. * @}
  1526. */
  1527. /** @defgroup TIM_Exported_Functions_Group8 TIM Peripheral Control functions
  1528. * @brief Peripheral Control functions
  1529. * @{
  1530. */
  1531. /* Control functions *********************************************************/
  1532. HAL_StatusTypeDef HAL_TIM_OC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfig, uint32_t Channel);
  1533. HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfig, uint32_t Channel);
  1534. HAL_StatusTypeDef HAL_TIM_IC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_IC_InitTypeDef *sConfig, uint32_t Channel);
  1535. HAL_StatusTypeDef HAL_TIM_OnePulse_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OnePulse_InitTypeDef *sConfig,
  1536. uint32_t OutputChannel, uint32_t InputChannel);
  1537. HAL_StatusTypeDef HAL_TIM_ConfigOCrefClear(TIM_HandleTypeDef *htim, TIM_ClearInputConfigTypeDef *sClearInputConfig,
  1538. uint32_t Channel);
  1539. HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, TIM_ClockConfigTypeDef *sClockSourceConfig);
  1540. HAL_StatusTypeDef HAL_TIM_ConfigTI1Input(TIM_HandleTypeDef *htim, uint32_t TI1_Selection);
  1541. HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro(TIM_HandleTypeDef *htim, TIM_SlaveConfigTypeDef *sSlaveConfig);
  1542. HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro_IT(TIM_HandleTypeDef *htim, TIM_SlaveConfigTypeDef *sSlaveConfig);
  1543. HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,
  1544. uint32_t BurstRequestSrc, uint32_t *BurstBuffer, uint32_t BurstLength);
  1545. HAL_StatusTypeDef HAL_TIM_DMABurst_MultiWriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,
  1546. uint32_t BurstRequestSrc, uint32_t *BurstBuffer, uint32_t BurstLength,
  1547. uint32_t DataLength);
  1548. HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc);
  1549. HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,
  1550. uint32_t BurstRequestSrc, uint32_t *BurstBuffer, uint32_t BurstLength);
  1551. HAL_StatusTypeDef HAL_TIM_DMABurst_MultiReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,
  1552. uint32_t BurstRequestSrc, uint32_t *BurstBuffer, uint32_t BurstLength,
  1553. uint32_t DataLength);
  1554. HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc);
  1555. HAL_StatusTypeDef HAL_TIM_GenerateEvent(TIM_HandleTypeDef *htim, uint32_t EventSource);
  1556. uint32_t HAL_TIM_ReadCapturedValue(TIM_HandleTypeDef *htim, uint32_t Channel);
  1557. /**
  1558. * @}
  1559. */
  1560. /** @defgroup TIM_Exported_Functions_Group9 TIM Callbacks functions
  1561. * @brief TIM Callbacks functions
  1562. * @{
  1563. */
  1564. /* Callback in non blocking modes (Interrupt and DMA) *************************/
  1565. void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim);
  1566. void HAL_TIM_PeriodElapsedHalfCpltCallback(TIM_HandleTypeDef *htim);
  1567. void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim);
  1568. void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim);
  1569. void HAL_TIM_IC_CaptureHalfCpltCallback(TIM_HandleTypeDef *htim);
  1570. void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim);
  1571. void HAL_TIM_PWM_PulseFinishedHalfCpltCallback(TIM_HandleTypeDef *htim);
  1572. void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim);
  1573. void HAL_TIM_TriggerHalfCpltCallback(TIM_HandleTypeDef *htim);
  1574. void HAL_TIM_ErrorCallback(TIM_HandleTypeDef *htim);
  1575. /* Callbacks Register/UnRegister functions ***********************************/
  1576. #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
  1577. HAL_StatusTypeDef HAL_TIM_RegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID,
  1578. pTIM_CallbackTypeDef pCallback);
  1579. HAL_StatusTypeDef HAL_TIM_UnRegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID);
  1580. #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
  1581. /**
  1582. * @}
  1583. */
  1584. /** @defgroup TIM_Exported_Functions_Group10 TIM Peripheral State functions
  1585. * @brief Peripheral State functions
  1586. * @{
  1587. */
  1588. /* Peripheral State functions ************************************************/
  1589. HAL_TIM_StateTypeDef HAL_TIM_Base_GetState(TIM_HandleTypeDef *htim);
  1590. HAL_TIM_StateTypeDef HAL_TIM_OC_GetState(TIM_HandleTypeDef *htim);
  1591. HAL_TIM_StateTypeDef HAL_TIM_PWM_GetState(TIM_HandleTypeDef *htim);
  1592. HAL_TIM_StateTypeDef HAL_TIM_IC_GetState(TIM_HandleTypeDef *htim);
  1593. HAL_TIM_StateTypeDef HAL_TIM_OnePulse_GetState(TIM_HandleTypeDef *htim);
  1594. HAL_TIM_StateTypeDef HAL_TIM_Encoder_GetState(TIM_HandleTypeDef *htim);
  1595. /* Peripheral Channel state functions ************************************************/
  1596. HAL_TIM_ActiveChannel HAL_TIM_GetActiveChannel(TIM_HandleTypeDef *htim);
  1597. HAL_TIM_ChannelStateTypeDef HAL_TIM_GetChannelState(TIM_HandleTypeDef *htim, uint32_t Channel);
  1598. HAL_TIM_DMABurstStateTypeDef HAL_TIM_DMABurstState(TIM_HandleTypeDef *htim);
  1599. /**
  1600. * @}
  1601. */
  1602. /**
  1603. * @}
  1604. */
  1605. /* End of exported functions -------------------------------------------------*/
  1606. /* Private functions----------------------------------------------------------*/
  1607. /** @defgroup TIM_Private_Functions TIM Private Functions
  1608. * @{
  1609. */
  1610. void TIM_DMADelayPulseCplt(DMA_HandleTypeDef *hdma);
  1611. void TIM_DMADelayPulseHalfCplt(DMA_HandleTypeDef *hdma);
  1612. void TIM_DMAError(DMA_HandleTypeDef *hdma);
  1613. void TIM_DMACaptureCplt(DMA_HandleTypeDef *hdma);
  1614. void TIM_DMACaptureHalfCplt(DMA_HandleTypeDef *hdma);
  1615. #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
  1616. void TIM_ResetCallback(TIM_HandleTypeDef *htim);
  1617. #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
  1618. /**
  1619. * @}
  1620. */
  1621. /* End of private functions --------------------------------------------------*/
  1622. /**
  1623. * @}
  1624. */
  1625. /**
  1626. * @}
  1627. */
  1628. #ifdef __cplusplus
  1629. }
  1630. #endif
  1631. #endif /* STM32L1xx_HAL_TIM_H */
  1632. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/