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.
 
 
 

609 lines
29 KiB

  1. /**
  2. ******************************************************************************
  3. * @file stm32f7xx_hal_tim_ex.h
  4. * @author MCD Application Team
  5. * @version V1.1.2
  6. * @date 23-September-2016
  7. * @brief Header file of TIM HAL Extension module.
  8. ******************************************************************************
  9. * @attention
  10. *
  11. * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
  12. *
  13. * Redistribution and use in source and binary forms, with or without modification,
  14. * are permitted provided that the following conditions are met:
  15. * 1. Redistributions of source code must retain the above copyright notice,
  16. * this list of conditions and the following disclaimer.
  17. * 2. Redistributions in binary form must reproduce the above copyright notice,
  18. * this list of conditions and the following disclaimer in the documentation
  19. * and/or other materials provided with the distribution.
  20. * 3. Neither the name of STMicroelectronics nor the names of its contributors
  21. * may be used to endorse or promote products derived from this software
  22. * without specific prior written permission.
  23. *
  24. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  25. * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  26. * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  27. * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
  28. * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  29. * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  30. * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  31. * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  32. * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  33. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  34. *
  35. ******************************************************************************
  36. */
  37. /* Define to prevent recursive inclusion -------------------------------------*/
  38. #ifndef __STM32F7xx_HAL_TIM_EX_H
  39. #define __STM32F7xx_HAL_TIM_EX_H
  40. #ifdef __cplusplus
  41. extern "C" {
  42. #endif
  43. /* Includes ------------------------------------------------------------------*/
  44. #include "stm32f7xx_hal_def.h"
  45. /** @addtogroup STM32F7xx_HAL_Driver
  46. * @{
  47. */
  48. /** @addtogroup TIMEx
  49. * @{
  50. */
  51. /* Exported types ------------------------------------------------------------*/
  52. /** @defgroup TIMEx_Exported_Types TIM Exported Types
  53. * @{
  54. */
  55. /**
  56. * @brief TIM Hall sensor Configuration Structure definition
  57. */
  58. typedef struct
  59. {
  60. uint32_t IC1Polarity; /*!< Specifies the active edge of the input signal.
  61. This parameter can be a value of @ref TIM_Input_Capture_Polarity */
  62. uint32_t IC1Prescaler; /*!< Specifies the Input Capture Prescaler.
  63. This parameter can be a value of @ref TIM_Input_Capture_Prescaler */
  64. uint32_t IC1Filter; /*!< Specifies the input capture filter.
  65. This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
  66. uint32_t Commutation_Delay; /*!< Specifies the pulse value to be loaded into the Capture Compare Register.
  67. This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */
  68. } TIM_HallSensor_InitTypeDef;
  69. /**
  70. * @brief TIM Master configuration Structure definition
  71. */
  72. typedef struct {
  73. uint32_t MasterOutputTrigger; /*!< Trigger output (TRGO) selection.
  74. This parameter can be a value of @ref TIM_Master_Mode_Selection */
  75. uint32_t MasterOutputTrigger2; /*!< Trigger output2 (TRGO2) selection
  76. This parameter can be a value of @ref TIMEx_Master_Mode_Selection_2 */
  77. uint32_t MasterSlaveMode; /*!< Master/slave mode selection.
  78. This parameter can be a value of @ref TIM_Master_Slave_Mode */
  79. }TIM_MasterConfigTypeDef;
  80. /**
  81. * @brief TIM Break input(s) and Dead time configuration Structure definition
  82. * @note 2 break inputs can be configured (BKIN and BKIN2) with configurable
  83. * filter and polarity.
  84. */
  85. typedef struct
  86. {
  87. uint32_t OffStateRunMode; /*!< TIM off state in run mode.
  88. This parameter can be a value of @ref TIM_OSSR_Off_State_Selection_for_Run_mode_state */
  89. uint32_t OffStateIDLEMode; /*!< TIM off state in IDLE mode.
  90. This parameter can be a value of @ref TIM_OSSI_Off_State_Selection_for_Idle_mode_state */
  91. uint32_t LockLevel; /*!< TIM Lock level.
  92. This parameter can be a value of @ref TIM_Lock_level */
  93. uint32_t DeadTime; /*!< TIM dead Time.
  94. This parameter can be a number between Min_Data = 0x00 and Max_Data = 0xFF */
  95. uint32_t BreakState; /*!< TIM Break State.
  96. This parameter can be a value of @ref TIM_Break_Input_enable_disable */
  97. uint32_t BreakPolarity; /*!< TIM Break input polarity.
  98. This parameter can be a value of @ref TIM_Break_Polarity */
  99. uint32_t BreakFilter; /*!< Specifies the break input filter.
  100. This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
  101. uint32_t Break2State; /*!< TIM Break2 State
  102. This parameter can be a value of @ref TIMEx_Break2_Input_enable_disable */
  103. uint32_t Break2Polarity; /*!< TIM Break2 input polarity
  104. This parameter can be a value of @ref TIMEx_Break2_Polarity */
  105. uint32_t Break2Filter; /*!< TIM break2 input filter.
  106. This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
  107. uint32_t AutomaticOutput; /*!< TIM Automatic Output Enable state
  108. This parameter can be a value of @ref TIM_AOE_Bit_Set_Reset */
  109. } TIM_BreakDeadTimeConfigTypeDef;
  110. #if defined (STM32F765xx) || defined(STM32F767xx) || defined(STM32F769xx) || defined(STM32F777xx) || defined(STM32F779xx)
  111. /**
  112. * @brief TIM Break/Break2 input configuration
  113. */
  114. typedef struct {
  115. uint32_t Source; /*!< Specifies the source of the timer break input.
  116. This parameter can be a value of @ref TIMEx_Break_Input_Source */
  117. uint32_t Enable; /*!< Specifies whether or not the break input source is enabled.
  118. This parameter can be a value of @ref TIMEx_Break_Input_Source_Enable */
  119. } TIMEx_BreakInputConfigTypeDef;
  120. #endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */
  121. /**
  122. * @}
  123. */
  124. /* Exported constants --------------------------------------------------------*/
  125. /** @defgroup TIMEx_Exported_Constants TIMEx Exported Constants
  126. * @{
  127. */
  128. /** @defgroup TIMEx_Channel TIMEx Channel
  129. * @{
  130. */
  131. #define TIM_CHANNEL_1 ((uint32_t)0x0000U)
  132. #define TIM_CHANNEL_2 ((uint32_t)0x0004U)
  133. #define TIM_CHANNEL_3 ((uint32_t)0x0008U)
  134. #define TIM_CHANNEL_4 ((uint32_t)0x000CU)
  135. #define TIM_CHANNEL_5 ((uint32_t)0x0010U)
  136. #define TIM_CHANNEL_6 ((uint32_t)0x0014U)
  137. #define TIM_CHANNEL_ALL ((uint32_t)0x003CU)
  138. /**
  139. * @}
  140. */
  141. /** @defgroup TIMEx_Output_Compare_and_PWM_modes TIMEx Output Compare and PWM Modes
  142. * @{
  143. */
  144. #define TIM_OCMODE_TIMING ((uint32_t)0x0000U)
  145. #define TIM_OCMODE_ACTIVE ((uint32_t)TIM_CCMR1_OC1M_0)
  146. #define TIM_OCMODE_INACTIVE ((uint32_t)TIM_CCMR1_OC1M_1)
  147. #define TIM_OCMODE_TOGGLE ((uint32_t)TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0)
  148. #define TIM_OCMODE_PWM1 ((uint32_t)TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1)
  149. #define TIM_OCMODE_PWM2 ((uint32_t)TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0)
  150. #define TIM_OCMODE_FORCED_ACTIVE ((uint32_t)TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_0)
  151. #define TIM_OCMODE_FORCED_INACTIVE ((uint32_t)TIM_CCMR1_OC1M_2)
  152. #define TIM_OCMODE_RETRIGERRABLE_OPM1 ((uint32_t)TIM_CCMR1_OC1M_3)
  153. #define TIM_OCMODE_RETRIGERRABLE_OPM2 ((uint32_t)TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_0)
  154. #define TIM_OCMODE_COMBINED_PWM1 ((uint32_t)TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_2)
  155. #define TIM_OCMODE_COMBINED_PWM2 ((uint32_t)TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_0 | TIM_CCMR1_OC1M_2)
  156. #define TIM_OCMODE_ASSYMETRIC_PWM1 ((uint32_t)TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2)
  157. #define TIM_OCMODE_ASSYMETRIC_PWM2 ((uint32_t)TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M)
  158. /**
  159. * @}
  160. */
  161. /** @defgroup TIMEx_Remap TIMEx Remap
  162. * @{
  163. */
  164. #define TIM_TIM2_TIM8_TRGO (0x00000000U)
  165. #define TIM_TIM2_ETH_PTP (0x00000400U)
  166. #define TIM_TIM2_USBFS_SOF (0x00000800U)
  167. #define TIM_TIM2_USBHS_SOF (0x00000C00U)
  168. #define TIM_TIM5_GPIO (0x00000000U)
  169. #define TIM_TIM5_LSI (0x00000040U)
  170. #define TIM_TIM5_LSE (0x00000080U)
  171. #define TIM_TIM5_RTC (0x000000C0U)
  172. #define TIM_TIM11_GPIO (0x00000000U)
  173. #define TIM_TIM11_SPDIFRX (0x00000001U)
  174. #define TIM_TIM11_HSE (0x00000002U)
  175. #define TIM_TIM11_MCO1 (0x00000003U)
  176. /**
  177. * @}
  178. */
  179. /** @defgroup TIMEx_ClearInput_Source TIMEx Clear Input Source
  180. * @{
  181. */
  182. #define TIM_CLEARINPUTSOURCE_ETR ((uint32_t)0x0001U)
  183. #define TIM_CLEARINPUTSOURCE_OCREFCLR ((uint32_t)0x0002U)
  184. #define TIM_CLEARINPUTSOURCE_NONE ((uint32_t)0x0000U)
  185. /**
  186. * @}
  187. */
  188. /** @defgroup TIMEx_Break2_Input_enable_disable TIMEx Break input 2 Enable
  189. * @{
  190. */
  191. #define TIM_BREAK2_DISABLE ((uint32_t)0x00000000U)
  192. #define TIM_BREAK2_ENABLE ((uint32_t)TIM_BDTR_BK2E)
  193. /**
  194. * @}
  195. */
  196. /** @defgroup TIMEx_Break2_Polarity TIMEx Break2 Polarity
  197. * @{
  198. */
  199. #define TIM_BREAK2POLARITY_LOW ((uint32_t)0x00000000U)
  200. #define TIM_BREAK2POLARITY_HIGH (TIM_BDTR_BK2P)
  201. /**
  202. * @}
  203. */
  204. /** @defgroup TIMEx_Group_Channel5 TIMEx Group Channel 5 and Channel 1, 2 or 3
  205. * @{
  206. */
  207. #define TIM_GROUPCH5_NONE ((uint32_t)0x00000000U) /* !< No effect of OC5REF on OC1REFC, OC2REFC and OC3REFC */
  208. #define TIM_GROUPCH5_OC1REFC (TIM_CCR5_GC5C1) /* !< OC1REFC is the logical AND of OC1REFC and OC5REF */
  209. #define TIM_GROUPCH5_OC2REFC (TIM_CCR5_GC5C2) /* !< OC2REFC is the logical AND of OC2REFC and OC5REF */
  210. #define TIM_GROUPCH5_OC3REFC (TIM_CCR5_GC5C3) /* !< OC3REFC is the logical AND of OC3REFC and OC5REF */
  211. /**
  212. * @}
  213. */
  214. /** @defgroup TIMEx_Master_Mode_Selection_2 TIMEx Master Mode Selection 2 (TRGO2)
  215. * @{
  216. */
  217. #define TIM_TRGO2_RESET ((uint32_t)0x00000000U)
  218. #define TIM_TRGO2_ENABLE ((uint32_t)(TIM_CR2_MMS2_0))
  219. #define TIM_TRGO2_UPDATE ((uint32_t)(TIM_CR2_MMS2_1))
  220. #define TIM_TRGO2_OC1 ((uint32_t)(TIM_CR2_MMS2_1 | TIM_CR2_MMS2_0))
  221. #define TIM_TRGO2_OC1REF ((uint32_t)(TIM_CR2_MMS2_2))
  222. #define TIM_TRGO2_OC2REF ((uint32_t)(TIM_CR2_MMS2_2 | TIM_CR2_MMS2_0))
  223. #define TIM_TRGO2_OC3REF ((uint32_t)(TIM_CR2_MMS2_2 | TIM_CR2_MMS2_1))
  224. #define TIM_TRGO2_OC4REF ((uint32_t)(TIM_CR2_MMS2_2 | TIM_CR2_MMS2_1 | TIM_CR2_MMS2_0))
  225. #define TIM_TRGO2_OC5REF ((uint32_t)(TIM_CR2_MMS2_3))
  226. #define TIM_TRGO2_OC6REF ((uint32_t)(TIM_CR2_MMS2_3 | TIM_CR2_MMS2_0))
  227. #define TIM_TRGO2_OC4REF_RISINGFALLING ((uint32_t)(TIM_CR2_MMS2_3 | TIM_CR2_MMS2_1))
  228. #define TIM_TRGO2_OC6REF_RISINGFALLING ((uint32_t)(TIM_CR2_MMS2_3 | TIM_CR2_MMS2_1 | TIM_CR2_MMS2_0))
  229. #define TIM_TRGO2_OC4REF_RISING_OC6REF_RISING ((uint32_t)(TIM_CR2_MMS2_3 | TIM_CR2_MMS2_2))
  230. #define TIM_TRGO2_OC4REF_RISING_OC6REF_FALLING ((uint32_t)(TIM_CR2_MMS2_3 | TIM_CR2_MMS2_2 | TIM_CR2_MMS2_0))
  231. #define TIM_TRGO2_OC5REF_RISING_OC6REF_RISING ((uint32_t)(TIM_CR2_MMS2_3 | TIM_CR2_MMS2_2 |TIM_CR2_MMS2_1))
  232. #define TIM_TRGO2_OC5REF_RISING_OC6REF_FALLING ((uint32_t)(TIM_CR2_MMS2_3 | TIM_CR2_MMS2_2 | TIM_CR2_MMS2_1 | TIM_CR2_MMS2_0))
  233. /**
  234. * @}
  235. */
  236. /** @defgroup TIMEx_Slave_Mode TIMEx Slave mode
  237. * @{
  238. */
  239. #define TIM_SLAVEMODE_DISABLE ((uint32_t)0x0000U)
  240. #define TIM_SLAVEMODE_RESET ((uint32_t)(TIM_SMCR_SMS_2))
  241. #define TIM_SLAVEMODE_GATED ((uint32_t)(TIM_SMCR_SMS_2 | TIM_SMCR_SMS_0))
  242. #define TIM_SLAVEMODE_TRIGGER ((uint32_t)(TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1))
  243. #define TIM_SLAVEMODE_EXTERNAL1 ((uint32_t)(TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1 | TIM_SMCR_SMS_0))
  244. #define TIM_SLAVEMODE_COMBINED_RESETTRIGGER ((uint32_t)(TIM_SMCR_SMS_3))
  245. /**
  246. * @}
  247. */
  248. #if defined(STM32F765xx) || defined(STM32F767xx) || defined(STM32F769xx) || defined(STM32F777xx) || defined(STM32F779xx)
  249. /** @defgroup TIMEx_Break_Input TIM Extended Break input
  250. * @{
  251. */
  252. #define TIM_BREAKINPUT_BRK ((uint32_t)0x00000001U) /* !< Timer break input */
  253. #define TIM_BREAKINPUT_BRK2 ((uint32_t)0x00000002U) /* !< Timer break2 input */
  254. /**
  255. * @}
  256. */
  257. /** @defgroup TIMEx_Break_Input_Source TIM Extended Break input source
  258. * @{
  259. */
  260. #define TIM_BREAKINPUTSOURCE_BKIN ((uint32_t)0x00000001U) /* !< An external source (GPIO) is connected to the BKIN pin */
  261. #define TIM_BREAKINPUTSOURCE_DFSDM1 ((uint32_t)0x00000008U) /* !< The analog watchdog output of the DFSDM1 peripheral is connected to the break input */
  262. /**
  263. * @}
  264. */
  265. /** @defgroup TIMEx_Break_Input_Source_Enable TIM Extended Break input source enabling
  266. * @{
  267. */
  268. #define TIM_BREAKINPUTSOURCE_DISABLE ((uint32_t)0x00000000U) /* !< Break input source is disabled */
  269. #define TIM_BREAKINPUTSOURCE_ENABLE ((uint32_t)0x00000001U) /* !< Break input source is enabled */
  270. /**
  271. * @}
  272. */
  273. /**
  274. * @}
  275. */
  276. #endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */
  277. /**
  278. * @}
  279. */
  280. /* Exported macro ------------------------------------------------------------*/
  281. /** @defgroup TIMEx_Exported_Macros TIMEx Exported Macros
  282. * @{
  283. */
  284. /**
  285. * @brief Sets the TIM Capture Compare Register value on runtime without
  286. * calling another time ConfigChannel function.
  287. * @param __HANDLE__: TIM handle.
  288. * @param __CHANNEL__ : TIM Channels to be configured.
  289. * This parameter can be one of the following values:
  290. * @arg TIM_CHANNEL_1: TIM Channel 1 selected
  291. * @arg TIM_CHANNEL_2: TIM Channel 2 selected
  292. * @arg TIM_CHANNEL_3: TIM Channel 3 selected
  293. * @arg TIM_CHANNEL_4: TIM Channel 4 selected
  294. * @arg TIM_CHANNEL_5: TIM Channel 5 selected
  295. * @arg TIM_CHANNEL_6: TIM Channel 6 selected
  296. * @param __COMPARE__: specifies the Capture Compare register new value.
  297. * @retval None
  298. */
  299. #define __HAL_TIM_SET_COMPARE(__HANDLE__, __CHANNEL__, __COMPARE__) \
  300. (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1 = (__COMPARE__)) :\
  301. ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2 = (__COMPARE__)) :\
  302. ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3 = (__COMPARE__)) :\
  303. ((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCR4 = (__COMPARE__)) :\
  304. ((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCR5 = (__COMPARE__)) :\
  305. ((__HANDLE__)->Instance->CCR6 = (__COMPARE__)))
  306. /**
  307. * @brief Gets the TIM Capture Compare Register value on runtime
  308. * @param __HANDLE__: TIM handle.
  309. * @param __CHANNEL__ : TIM Channel associated with the capture compare register
  310. * This parameter can be one of the following values:
  311. * @arg TIM_CHANNEL_1: get capture/compare 1 register value
  312. * @arg TIM_CHANNEL_2: get capture/compare 2 register value
  313. * @arg TIM_CHANNEL_3: get capture/compare 3 register value
  314. * @arg TIM_CHANNEL_4: get capture/compare 4 register value
  315. * @arg TIM_CHANNEL_5: get capture/compare 5 register value
  316. * @arg TIM_CHANNEL_6: get capture/compare 6 register value
  317. * @retval None
  318. */
  319. #define __HAL_TIM_GET_COMPARE(__HANDLE__, __CHANNEL__) \
  320. (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1) :\
  321. ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2) :\
  322. ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3) :\
  323. ((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCR4) :\
  324. ((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCR5) :\
  325. ((__HANDLE__)->Instance->CCR6))
  326. /**
  327. * @}
  328. */
  329. /* Exported functions --------------------------------------------------------*/
  330. /** @addtogroup TIMEx_Exported_Functions
  331. * @{
  332. */
  333. /** @addtogroup TIMEx_Exported_Functions_Group1
  334. * @{
  335. */
  336. /* Timer Hall Sensor functions **********************************************/
  337. HAL_StatusTypeDef HAL_TIMEx_HallSensor_Init(TIM_HandleTypeDef* htim, TIM_HallSensor_InitTypeDef* sConfig);
  338. HAL_StatusTypeDef HAL_TIMEx_HallSensor_DeInit(TIM_HandleTypeDef* htim);
  339. void HAL_TIMEx_HallSensor_MspInit(TIM_HandleTypeDef* htim);
  340. void HAL_TIMEx_HallSensor_MspDeInit(TIM_HandleTypeDef* htim);
  341. /* Blocking mode: Polling */
  342. HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start(TIM_HandleTypeDef* htim);
  343. HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop(TIM_HandleTypeDef* htim);
  344. /* Non-Blocking mode: Interrupt */
  345. HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_IT(TIM_HandleTypeDef* htim);
  346. HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_IT(TIM_HandleTypeDef* htim);
  347. /* Non-Blocking mode: DMA */
  348. HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_DMA(TIM_HandleTypeDef* htim, uint32_t *pData, uint16_t Length);
  349. HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_DMA(TIM_HandleTypeDef* htim);
  350. /**
  351. * @}
  352. */
  353. /** @addtogroup TIMEx_Exported_Functions_Group2
  354. * @{
  355. */
  356. /* Timer Complementary Output Compare functions *****************************/
  357. /* Blocking mode: Polling */
  358. HAL_StatusTypeDef HAL_TIMEx_OCN_Start(TIM_HandleTypeDef* htim, uint32_t Channel);
  359. HAL_StatusTypeDef HAL_TIMEx_OCN_Stop(TIM_HandleTypeDef* htim, uint32_t Channel);
  360. /* Non-Blocking mode: Interrupt */
  361. HAL_StatusTypeDef HAL_TIMEx_OCN_Start_IT(TIM_HandleTypeDef* htim, uint32_t Channel);
  362. HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_IT(TIM_HandleTypeDef* htim, uint32_t Channel);
  363. /* Non-Blocking mode: DMA */
  364. HAL_StatusTypeDef HAL_TIMEx_OCN_Start_DMA(TIM_HandleTypeDef* htim, uint32_t Channel, uint32_t *pData, uint16_t Length);
  365. HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_DMA(TIM_HandleTypeDef* htim, uint32_t Channel);
  366. /**
  367. * @}
  368. */
  369. /** @addtogroup TIMEx_Exported_Functions_Group3
  370. * @{
  371. */
  372. /* Timer Complementary PWM functions ****************************************/
  373. /* Blocking mode: Polling */
  374. HAL_StatusTypeDef HAL_TIMEx_PWMN_Start(TIM_HandleTypeDef* htim, uint32_t Channel);
  375. HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop(TIM_HandleTypeDef* htim, uint32_t Channel);
  376. /* Non-Blocking mode: Interrupt */
  377. HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_IT(TIM_HandleTypeDef* htim, uint32_t Channel);
  378. HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_IT(TIM_HandleTypeDef* htim, uint32_t Channel);
  379. /* Non-Blocking mode: DMA */
  380. HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_DMA(TIM_HandleTypeDef* htim, uint32_t Channel, uint32_t *pData, uint16_t Length);
  381. HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_DMA(TIM_HandleTypeDef* htim, uint32_t Channel);
  382. /**
  383. * @}
  384. */
  385. /** @addtogroup TIMEx_Exported_Functions_Group4
  386. * @{
  387. */
  388. /* Timer Complementary One Pulse functions **********************************/
  389. /* Blocking mode: Polling */
  390. HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start(TIM_HandleTypeDef* htim, uint32_t OutputChannel);
  391. HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop(TIM_HandleTypeDef* htim, uint32_t OutputChannel);
  392. /* Non-Blocking mode: Interrupt */
  393. HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start_IT(TIM_HandleTypeDef* htim, uint32_t OutputChannel);
  394. HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop_IT(TIM_HandleTypeDef* htim, uint32_t OutputChannel);
  395. /**
  396. * @}
  397. */
  398. /** @addtogroup TIMEx_Exported_Functions_Group5
  399. * @{
  400. */
  401. /* Extension Control functions ************************************************/
  402. HAL_StatusTypeDef HAL_TIMEx_ConfigCommutationEvent(TIM_HandleTypeDef* htim, uint32_t InputTrigger, uint32_t CommutationSource);
  403. HAL_StatusTypeDef HAL_TIMEx_ConfigCommutationEvent_IT(TIM_HandleTypeDef* htim, uint32_t InputTrigger, uint32_t CommutationSource);
  404. HAL_StatusTypeDef HAL_TIMEx_ConfigCommutationEvent_DMA(TIM_HandleTypeDef* htim, uint32_t InputTrigger, uint32_t CommutationSource);
  405. HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef* htim, TIM_MasterConfigTypeDef * sMasterConfig);
  406. HAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef* htim, TIM_BreakDeadTimeConfigTypeDef *sBreakDeadTimeConfig);
  407. #if defined (STM32F765xx) || defined(STM32F767xx) || defined(STM32F769xx) || defined(STM32F777xx) || defined(STM32F779xx)
  408. HAL_StatusTypeDef HAL_TIMEx_ConfigBreakInput(TIM_HandleTypeDef *htim, uint32_t BreakInput, TIMEx_BreakInputConfigTypeDef *sBreakInputConfig);
  409. #endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */
  410. HAL_StatusTypeDef HAL_TIMEx_RemapConfig(TIM_HandleTypeDef* htim, uint32_t Remap);
  411. HAL_StatusTypeDef HAL_TIMEx_GroupChannel5(TIM_HandleTypeDef *htim, uint32_t OCRef);
  412. /**
  413. * @}
  414. */
  415. /** @addtogroup TIMEx_Exported_Functions_Group6
  416. * @{
  417. */
  418. /* Extension Callback *********************************************************/
  419. void HAL_TIMEx_CommutationCallback(TIM_HandleTypeDef* htim);
  420. void HAL_TIMEx_BreakCallback(TIM_HandleTypeDef* htim);
  421. void HAL_TIMEx_DMACommutationCplt(DMA_HandleTypeDef *hdma);
  422. /**
  423. * @}
  424. */
  425. /** @addtogroup TIMEx_Exported_Functions_Group7
  426. * @{
  427. */
  428. /* Extension Peripheral State functions **************************************/
  429. HAL_TIM_StateTypeDef HAL_TIMEx_HallSensor_GetState(TIM_HandleTypeDef* htim);
  430. /**
  431. * @}
  432. */
  433. /**
  434. * @}
  435. */
  436. /* Private types -------------------------------------------------------------*/
  437. /* Private variables ---------------------------------------------------------*/
  438. /* Private constants ---------------------------------------------------------*/
  439. /* Private macros ------------------------------------------------------------*/
  440. /** @defgroup TIMEx_Private_Macros TIMEx Private Macros
  441. * @{
  442. */
  443. #define IS_TIM_CHANNELS(CHANNEL) (((CHANNEL) == TIM_CHANNEL_1) || \
  444. ((CHANNEL) == TIM_CHANNEL_2) || \
  445. ((CHANNEL) == TIM_CHANNEL_3) || \
  446. ((CHANNEL) == TIM_CHANNEL_4) || \
  447. ((CHANNEL) == TIM_CHANNEL_5) || \
  448. ((CHANNEL) == TIM_CHANNEL_6) || \
  449. ((CHANNEL) == TIM_CHANNEL_ALL))
  450. #define IS_TIM_PWMI_CHANNELS(CHANNEL) (((CHANNEL) == TIM_CHANNEL_1) || \
  451. ((CHANNEL) == TIM_CHANNEL_2))
  452. #define IS_TIM_OPM_CHANNELS(CHANNEL) (((CHANNEL) == TIM_CHANNEL_1) || \
  453. ((CHANNEL) == TIM_CHANNEL_2))
  454. #define IS_TIM_COMPLEMENTARY_CHANNELS(CHANNEL) (((CHANNEL) == TIM_CHANNEL_1) || \
  455. ((CHANNEL) == TIM_CHANNEL_2) || \
  456. ((CHANNEL) == TIM_CHANNEL_3))
  457. #define IS_TIM_PWM_MODE(MODE) (((MODE) == TIM_OCMODE_PWM1) || \
  458. ((MODE) == TIM_OCMODE_PWM2) || \
  459. ((MODE) == TIM_OCMODE_COMBINED_PWM1) || \
  460. ((MODE) == TIM_OCMODE_COMBINED_PWM2) || \
  461. ((MODE) == TIM_OCMODE_ASSYMETRIC_PWM1) || \
  462. ((MODE) == TIM_OCMODE_ASSYMETRIC_PWM2))
  463. #define IS_TIM_OC_MODE(MODE) (((MODE) == TIM_OCMODE_TIMING) || \
  464. ((MODE) == TIM_OCMODE_ACTIVE) || \
  465. ((MODE) == TIM_OCMODE_INACTIVE) || \
  466. ((MODE) == TIM_OCMODE_TOGGLE) || \
  467. ((MODE) == TIM_OCMODE_FORCED_ACTIVE) || \
  468. ((MODE) == TIM_OCMODE_FORCED_INACTIVE) || \
  469. ((MODE) == TIM_OCMODE_RETRIGERRABLE_OPM1) || \
  470. ((MODE) == TIM_OCMODE_RETRIGERRABLE_OPM2))
  471. #define IS_TIM_REMAP(__TIM_REMAP__) (((__TIM_REMAP__) == TIM_TIM2_TIM8_TRGO)||\
  472. ((__TIM_REMAP__) == TIM_TIM2_ETH_PTP)||\
  473. ((__TIM_REMAP__) == TIM_TIM2_USBFS_SOF)||\
  474. ((__TIM_REMAP__) == TIM_TIM2_USBHS_SOF)||\
  475. ((__TIM_REMAP__) == TIM_TIM5_GPIO)||\
  476. ((__TIM_REMAP__) == TIM_TIM5_LSI)||\
  477. ((__TIM_REMAP__) == TIM_TIM5_LSE)||\
  478. ((__TIM_REMAP__) == TIM_TIM5_RTC)||\
  479. ((__TIM_REMAP__) == TIM_TIM11_GPIO)||\
  480. ((__TIM_REMAP__) == TIM_TIM11_SPDIFRX)||\
  481. ((__TIM_REMAP__) == TIM_TIM11_HSE)||\
  482. ((__TIM_REMAP__) == TIM_TIM11_MCO1))
  483. #define IS_TIM_DEADTIME(__DEADTIME__) ((__DEADTIME__) <= 0xFF)
  484. #define IS_TIM_BREAK_FILTER(__FILTER__) ((__FILTER__) <= 0xF)
  485. #define IS_TIM_CLEARINPUT_SOURCE(MODE) (((MODE) == TIM_CLEARINPUTSOURCE_ETR) || \
  486. ((MODE) == TIM_CLEARINPUTSOURCE_OCREFCLR) || \
  487. ((MODE) == TIM_CLEARINPUTSOURCE_NONE))
  488. #define IS_TIM_BREAK2_STATE(STATE) (((STATE) == TIM_BREAK2_ENABLE) || \
  489. ((STATE) == TIM_BREAK2_DISABLE))
  490. #define IS_TIM_BREAK2_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_BREAK2POLARITY_LOW) || \
  491. ((__POLARITY__) == TIM_BREAK2POLARITY_HIGH))
  492. #define IS_TIM_GROUPCH5(OCREF) ((((OCREF) & 0x1FFFFFFF) == 0x00000000))
  493. #define IS_TIM_TRGO2_SOURCE(SOURCE) (((SOURCE) == TIM_TRGO2_RESET) || \
  494. ((SOURCE) == TIM_TRGO2_ENABLE) || \
  495. ((SOURCE) == TIM_TRGO2_UPDATE) || \
  496. ((SOURCE) == TIM_TRGO2_OC1) || \
  497. ((SOURCE) == TIM_TRGO2_OC1REF) || \
  498. ((SOURCE) == TIM_TRGO2_OC2REF) || \
  499. ((SOURCE) == TIM_TRGO2_OC3REF) || \
  500. ((SOURCE) == TIM_TRGO2_OC3REF) || \
  501. ((SOURCE) == TIM_TRGO2_OC4REF) || \
  502. ((SOURCE) == TIM_TRGO2_OC5REF) || \
  503. ((SOURCE) == TIM_TRGO2_OC6REF) || \
  504. ((SOURCE) == TIM_TRGO2_OC4REF_RISINGFALLING) || \
  505. ((SOURCE) == TIM_TRGO2_OC6REF_RISINGFALLING) || \
  506. ((SOURCE) == TIM_TRGO2_OC4REF_RISING_OC6REF_RISING) || \
  507. ((SOURCE) == TIM_TRGO2_OC4REF_RISING_OC6REF_FALLING) || \
  508. ((SOURCE) == TIM_TRGO2_OC5REF_RISING_OC6REF_RISING) || \
  509. ((SOURCE) == TIM_TRGO2_OC5REF_RISING_OC6REF_FALLING))
  510. #define IS_TIM_SLAVE_MODE(MODE) (((MODE) == TIM_SLAVEMODE_DISABLE) || \
  511. ((MODE) == TIM_SLAVEMODE_RESET) || \
  512. ((MODE) == TIM_SLAVEMODE_GATED) || \
  513. ((MODE) == TIM_SLAVEMODE_TRIGGER) || \
  514. ((MODE) == TIM_SLAVEMODE_EXTERNAL1) || \
  515. ((MODE) == TIM_SLAVEMODE_COMBINED_RESETTRIGGER))
  516. #if defined (STM32F765xx) || defined(STM32F767xx) || defined(STM32F769xx) || defined(STM32F777xx) || defined(STM32F779xx)
  517. #define IS_TIM_BREAKINPUT(__BREAKINPUT__) (((__BREAKINPUT__) == TIM_BREAKINPUT_BRK) || \
  518. ((__BREAKINPUT__) == TIM_BREAKINPUT_BRK2))
  519. #define IS_TIM_BREAKINPUTSOURCE(__SOURCE__) (((__SOURCE__) == TIM_BREAKINPUTSOURCE_BKIN) || \
  520. ((__SOURCE__) == TIM_BREAKINPUTSOURCE_DFSDM))
  521. #define IS_TIM_BREAKINPUTSOURCE_STATE(__STATE__) (((__STATE__) == TIM_BREAKINPUTSOURCE_DISABLE) || \
  522. ((__STATE__) == TIM_BREAKINPUTSOURCE_ENABLE))
  523. #endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */
  524. /**
  525. * @}
  526. */
  527. /* Private functions ---------------------------------------------------------*/
  528. /** @defgroup TIMEx_Private_Functions TIMEx Private Functions
  529. * @{
  530. */
  531. /**
  532. * @}
  533. */
  534. /**
  535. * @}
  536. */
  537. /**
  538. * @}
  539. */
  540. #ifdef __cplusplus
  541. }
  542. #endif
  543. #endif /* __STM32F7xx_HAL_TIM_EX_H */
  544. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/