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.
 
 
 

553 lines
26 KiB

  1. /**
  2. ******************************************************************************
  3. * @file stm32f7xx_hal_tim_ex.h
  4. * @author MCD Application Team
  5. * @version V1.0.1
  6. * @date 25-June-2015
  7. * @brief Header file of TIM HAL Extension module.
  8. ******************************************************************************
  9. * @attention
  10. *
  11. * <h2><center>&copy; COPYRIGHT(c) 2015 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. /**
  111. * @}
  112. */
  113. /* Exported constants --------------------------------------------------------*/
  114. /** @defgroup TIMEx_Exported_Constants TIMEx Exported Constants
  115. * @{
  116. */
  117. /** @defgroup TIMEx_Channel TIMEx Channel
  118. * @{
  119. */
  120. #define TIM_CHANNEL_1 ((uint32_t)0x0000)
  121. #define TIM_CHANNEL_2 ((uint32_t)0x0004)
  122. #define TIM_CHANNEL_3 ((uint32_t)0x0008)
  123. #define TIM_CHANNEL_4 ((uint32_t)0x000C)
  124. #define TIM_CHANNEL_5 ((uint32_t)0x0010)
  125. #define TIM_CHANNEL_6 ((uint32_t)0x0014)
  126. #define TIM_CHANNEL_ALL ((uint32_t)0x003C)
  127. /**
  128. * @}
  129. */
  130. /** @defgroup TIMEx_Output_Compare_and_PWM_modes TIMEx Output Compare and PWM Modes
  131. * @{
  132. */
  133. #define TIM_OCMODE_TIMING ((uint32_t)0x0000)
  134. #define TIM_OCMODE_ACTIVE ((uint32_t)TIM_CCMR1_OC1M_0)
  135. #define TIM_OCMODE_INACTIVE ((uint32_t)TIM_CCMR1_OC1M_1)
  136. #define TIM_OCMODE_TOGGLE ((uint32_t)TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0)
  137. #define TIM_OCMODE_PWM1 ((uint32_t)TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1)
  138. #define TIM_OCMODE_PWM2 ((uint32_t)TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0)
  139. #define TIM_OCMODE_FORCED_ACTIVE ((uint32_t)TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_0)
  140. #define TIM_OCMODE_FORCED_INACTIVE ((uint32_t)TIM_CCMR1_OC1M_2)
  141. #define TIM_OCMODE_RETRIGERRABLE_OPM1 ((uint32_t)TIM_CCMR1_OC1M_3)
  142. #define TIM_OCMODE_RETRIGERRABLE_OPM2 ((uint32_t)TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_0)
  143. #define TIM_OCMODE_COMBINED_PWM1 ((uint32_t)TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_2)
  144. #define TIM_OCMODE_COMBINED_PWM2 ((uint32_t)TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_0 | TIM_CCMR1_OC1M_2)
  145. #define TIM_OCMODE_ASSYMETRIC_PWM1 ((uint32_t)TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2)
  146. #define TIM_OCMODE_ASSYMETRIC_PWM2 ((uint32_t)TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M)
  147. /**
  148. * @}
  149. */
  150. /** @defgroup TIMEx_Remap TIMEx Remap
  151. * @{
  152. */
  153. #define TIM_TIM2_TIM8_TRGO (0x00000000)
  154. #define TIM_TIM2_ETH_PTP (0x00000400)
  155. #define TIM_TIM2_USBFS_SOF (0x00000800)
  156. #define TIM_TIM2_USBHS_SOF (0x00000C00)
  157. #define TIM_TIM5_GPIO (0x00000000)
  158. #define TIM_TIM5_LSI (0x00000040)
  159. #define TIM_TIM5_LSE (0x00000080)
  160. #define TIM_TIM5_RTC (0x000000C0)
  161. #define TIM_TIM11_GPIO (0x00000000)
  162. #define TIM_TIM11_SPDIFRX (0x00000001)
  163. #define TIM_TIM11_HSE (0x00000002)
  164. #define TIM_TIM11_MCO1 (0x00000003)
  165. /**
  166. * @}
  167. */
  168. /** @defgroup TIMEx_ClearInput_Source TIMEx Clear Input Source
  169. * @{
  170. */
  171. #define TIM_CLEARINPUTSOURCE_ETR ((uint32_t)0x0001)
  172. #define TIM_CLEARINPUTSOURCE_OCREFCLR ((uint32_t)0x0002)
  173. #define TIM_CLEARINPUTSOURCE_NONE ((uint32_t)0x0000)
  174. /**
  175. * @}
  176. */
  177. /** @defgroup TIMEx_Break2_Input_enable_disable TIMEx Break input 2 Enable
  178. * @{
  179. */
  180. #define TIM_BREAK2_DISABLE ((uint32_t)0x00000000)
  181. #define TIM_BREAK2_ENABLE ((uint32_t)TIM_BDTR_BK2E)
  182. /**
  183. * @}
  184. */
  185. /** @defgroup TIMEx_Break2_Polarity TIMEx Break2 Polarity
  186. * @{
  187. */
  188. #define TIM_BREAK2POLARITY_LOW ((uint32_t)0x00000000)
  189. #define TIM_BREAK2POLARITY_HIGH (TIM_BDTR_BK2P)
  190. /**
  191. * @}
  192. */
  193. /** @defgroup TIMEx_Group_Channel5 TIMEx Group Channel 5 and Channel 1, 2 or 3
  194. * @{
  195. */
  196. #define TIM_GROUPCH5_NONE (uint32_t)0x00000000 /* !< No effect of OC5REF on OC1REFC, OC2REFC and OC3REFC */
  197. #define TIM_GROUPCH5_OC1REFC (TIM_CCR5_GC5C1) /* !< OC1REFC is the logical AND of OC1REFC and OC5REF */
  198. #define TIM_GROUPCH5_OC2REFC (TIM_CCR5_GC5C2) /* !< OC2REFC is the logical AND of OC2REFC and OC5REF */
  199. #define TIM_GROUPCH5_OC3REFC (TIM_CCR5_GC5C3) /* !< OC3REFC is the logical AND of OC3REFC and OC5REF */
  200. /**
  201. * @}
  202. */
  203. /** @defgroup TIMEx_Master_Mode_Selection_2 TIMEx Master Mode Selection 2 (TRGO2)
  204. * @{
  205. */
  206. #define TIM_TRGO2_RESET ((uint32_t)0x00000000)
  207. #define TIM_TRGO2_ENABLE ((uint32_t)(TIM_CR2_MMS2_0))
  208. #define TIM_TRGO2_UPDATE ((uint32_t)(TIM_CR2_MMS2_1))
  209. #define TIM_TRGO2_OC1 ((uint32_t)(TIM_CR2_MMS2_1 | TIM_CR2_MMS2_0))
  210. #define TIM_TRGO2_OC1REF ((uint32_t)(TIM_CR2_MMS2_2))
  211. #define TIM_TRGO2_OC2REF ((uint32_t)(TIM_CR2_MMS2_2 | TIM_CR2_MMS2_0))
  212. #define TIM_TRGO2_OC3REF ((uint32_t)(TIM_CR2_MMS2_2 | TIM_CR2_MMS2_1))
  213. #define TIM_TRGO2_OC4REF ((uint32_t)(TIM_CR2_MMS2_2 | TIM_CR2_MMS2_1 | TIM_CR2_MMS2_0))
  214. #define TIM_TRGO2_OC5REF ((uint32_t)(TIM_CR2_MMS2_3))
  215. #define TIM_TRGO2_OC6REF ((uint32_t)(TIM_CR2_MMS2_3 | TIM_CR2_MMS2_0))
  216. #define TIM_TRGO2_OC4REF_RISINGFALLING ((uint32_t)(TIM_CR2_MMS2_3 | TIM_CR2_MMS2_1))
  217. #define TIM_TRGO2_OC6REF_RISINGFALLING ((uint32_t)(TIM_CR2_MMS2_3 | TIM_CR2_MMS2_1 | TIM_CR2_MMS2_0))
  218. #define TIM_TRGO2_OC4REF_RISING_OC6REF_RISING ((uint32_t)(TIM_CR2_MMS2_3 | TIM_CR2_MMS2_2))
  219. #define TIM_TRGO2_OC4REF_RISING_OC6REF_FALLING ((uint32_t)(TIM_CR2_MMS2_3 | TIM_CR2_MMS2_2 | TIM_CR2_MMS2_0))
  220. #define TIM_TRGO2_OC5REF_RISING_OC6REF_RISING ((uint32_t)(TIM_CR2_MMS2_3 | TIM_CR2_MMS2_2 |TIM_CR2_MMS2_1))
  221. #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))
  222. /**
  223. * @}
  224. */
  225. /** @defgroup TIMEx_Slave_Mode TIMEx Slave mode
  226. * @{
  227. */
  228. #define TIM_SLAVEMODE_DISABLE ((uint32_t)0x0000)
  229. #define TIM_SLAVEMODE_RESET ((uint32_t)(TIM_SMCR_SMS_2))
  230. #define TIM_SLAVEMODE_GATED ((uint32_t)(TIM_SMCR_SMS_2 | TIM_SMCR_SMS_0))
  231. #define TIM_SLAVEMODE_TRIGGER ((uint32_t)(TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1))
  232. #define TIM_SLAVEMODE_EXTERNAL1 ((uint32_t)(TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1 | TIM_SMCR_SMS_0))
  233. #define TIM_SLAVEMODE_COMBINED_RESETTRIGGER ((uint32_t)(TIM_SMCR_SMS_3))
  234. /**
  235. * @}
  236. */
  237. /**
  238. * @}
  239. */
  240. /* Exported macro ------------------------------------------------------------*/
  241. /** @defgroup TIMEx_Exported_Macros TIMEx Exported Macros
  242. * @{
  243. */
  244. /**
  245. * @brief Sets the TIM Capture Compare Register value on runtime without
  246. * calling another time ConfigChannel function.
  247. * @param __HANDLE__: TIM handle.
  248. * @param __CHANNEL__ : TIM Channels to be configured.
  249. * This parameter can be one of the following values:
  250. * @arg TIM_CHANNEL_1: TIM Channel 1 selected
  251. * @arg TIM_CHANNEL_2: TIM Channel 2 selected
  252. * @arg TIM_CHANNEL_3: TIM Channel 3 selected
  253. * @arg TIM_CHANNEL_4: TIM Channel 4 selected
  254. * @arg TIM_CHANNEL_5: TIM Channel 5 selected
  255. * @arg TIM_CHANNEL_6: TIM Channel 6 selected
  256. * @param __COMPARE__: specifies the Capture Compare register new value.
  257. * @retval None
  258. */
  259. #define __HAL_TIM_SET_COMPARE(__HANDLE__, __CHANNEL__, __COMPARE__) \
  260. (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1 = (__COMPARE__)) :\
  261. ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2 = (__COMPARE__)) :\
  262. ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3 = (__COMPARE__)) :\
  263. ((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCR4 = (__COMPARE__)) :\
  264. ((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCR5 = (__COMPARE__)) :\
  265. ((__HANDLE__)->Instance->CCR6 |= (__COMPARE__)))
  266. /**
  267. * @brief Gets the TIM Capture Compare Register value on runtime
  268. * @param __HANDLE__: TIM handle.
  269. * @param __CHANNEL__ : TIM Channel associated with the capture compare register
  270. * This parameter can be one of the following values:
  271. * @arg TIM_CHANNEL_1: get capture/compare 1 register value
  272. * @arg TIM_CHANNEL_2: get capture/compare 2 register value
  273. * @arg TIM_CHANNEL_3: get capture/compare 3 register value
  274. * @arg TIM_CHANNEL_4: get capture/compare 4 register value
  275. * @arg TIM_CHANNEL_5: get capture/compare 5 register value
  276. * @arg TIM_CHANNEL_6: get capture/compare 6 register value
  277. * @retval None
  278. */
  279. #define __HAL_TIM_GET_COMPARE(__HANDLE__, __CHANNEL__) \
  280. (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1) :\
  281. ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2) :\
  282. ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3) :\
  283. ((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCR4) :\
  284. ((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCR5) :\
  285. ((__HANDLE__)->Instance->CCR6))
  286. /**
  287. * @}
  288. */
  289. /* Exported functions --------------------------------------------------------*/
  290. /** @addtogroup TIMEx_Exported_Functions
  291. * @{
  292. */
  293. /** @addtogroup TIMEx_Exported_Functions_Group1
  294. * @{
  295. */
  296. /* Timer Hall Sensor functions **********************************************/
  297. HAL_StatusTypeDef HAL_TIMEx_HallSensor_Init(TIM_HandleTypeDef* htim, TIM_HallSensor_InitTypeDef* sConfig);
  298. HAL_StatusTypeDef HAL_TIMEx_HallSensor_DeInit(TIM_HandleTypeDef* htim);
  299. void HAL_TIMEx_HallSensor_MspInit(TIM_HandleTypeDef* htim);
  300. void HAL_TIMEx_HallSensor_MspDeInit(TIM_HandleTypeDef* htim);
  301. /* Blocking mode: Polling */
  302. HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start(TIM_HandleTypeDef* htim);
  303. HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop(TIM_HandleTypeDef* htim);
  304. /* Non-Blocking mode: Interrupt */
  305. HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_IT(TIM_HandleTypeDef* htim);
  306. HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_IT(TIM_HandleTypeDef* htim);
  307. /* Non-Blocking mode: DMA */
  308. HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_DMA(TIM_HandleTypeDef* htim, uint32_t *pData, uint16_t Length);
  309. HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_DMA(TIM_HandleTypeDef* htim);
  310. /**
  311. * @}
  312. */
  313. /** @addtogroup TIMEx_Exported_Functions_Group2
  314. * @{
  315. */
  316. /* Timer Complementary Output Compare functions *****************************/
  317. /* Blocking mode: Polling */
  318. HAL_StatusTypeDef HAL_TIMEx_OCN_Start(TIM_HandleTypeDef* htim, uint32_t Channel);
  319. HAL_StatusTypeDef HAL_TIMEx_OCN_Stop(TIM_HandleTypeDef* htim, uint32_t Channel);
  320. /* Non-Blocking mode: Interrupt */
  321. HAL_StatusTypeDef HAL_TIMEx_OCN_Start_IT(TIM_HandleTypeDef* htim, uint32_t Channel);
  322. HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_IT(TIM_HandleTypeDef* htim, uint32_t Channel);
  323. /* Non-Blocking mode: DMA */
  324. HAL_StatusTypeDef HAL_TIMEx_OCN_Start_DMA(TIM_HandleTypeDef* htim, uint32_t Channel, uint32_t *pData, uint16_t Length);
  325. HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_DMA(TIM_HandleTypeDef* htim, uint32_t Channel);
  326. /**
  327. * @}
  328. */
  329. /** @addtogroup TIMEx_Exported_Functions_Group3
  330. * @{
  331. */
  332. /* Timer Complementary PWM functions ****************************************/
  333. /* Blocking mode: Polling */
  334. HAL_StatusTypeDef HAL_TIMEx_PWMN_Start(TIM_HandleTypeDef* htim, uint32_t Channel);
  335. HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop(TIM_HandleTypeDef* htim, uint32_t Channel);
  336. /* Non-Blocking mode: Interrupt */
  337. HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_IT(TIM_HandleTypeDef* htim, uint32_t Channel);
  338. HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_IT(TIM_HandleTypeDef* htim, uint32_t Channel);
  339. /* Non-Blocking mode: DMA */
  340. HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_DMA(TIM_HandleTypeDef* htim, uint32_t Channel, uint32_t *pData, uint16_t Length);
  341. HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_DMA(TIM_HandleTypeDef* htim, uint32_t Channel);
  342. /**
  343. * @}
  344. */
  345. /** @addtogroup TIMEx_Exported_Functions_Group4
  346. * @{
  347. */
  348. /* Timer Complementary One Pulse functions **********************************/
  349. /* Blocking mode: Polling */
  350. HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start(TIM_HandleTypeDef* htim, uint32_t OutputChannel);
  351. HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop(TIM_HandleTypeDef* htim, uint32_t OutputChannel);
  352. /* Non-Blocking mode: Interrupt */
  353. HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start_IT(TIM_HandleTypeDef* htim, uint32_t OutputChannel);
  354. HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop_IT(TIM_HandleTypeDef* htim, uint32_t OutputChannel);
  355. /**
  356. * @}
  357. */
  358. /** @addtogroup TIMEx_Exported_Functions_Group5
  359. * @{
  360. */
  361. /* Extension Control functions ************************************************/
  362. HAL_StatusTypeDef HAL_TIMEx_ConfigCommutationEvent(TIM_HandleTypeDef* htim, uint32_t InputTrigger, uint32_t CommutationSource);
  363. HAL_StatusTypeDef HAL_TIMEx_ConfigCommutationEvent_IT(TIM_HandleTypeDef* htim, uint32_t InputTrigger, uint32_t CommutationSource);
  364. HAL_StatusTypeDef HAL_TIMEx_ConfigCommutationEvent_DMA(TIM_HandleTypeDef* htim, uint32_t InputTrigger, uint32_t CommutationSource);
  365. HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef* htim, TIM_MasterConfigTypeDef * sMasterConfig);
  366. HAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef* htim, TIM_BreakDeadTimeConfigTypeDef *sBreakDeadTimeConfig);
  367. HAL_StatusTypeDef HAL_TIMEx_RemapConfig(TIM_HandleTypeDef* htim, uint32_t Remap);
  368. HAL_StatusTypeDef HAL_TIMEx_GroupChannel5(TIM_HandleTypeDef *htim, uint32_t OCRef);
  369. /**
  370. * @}
  371. */
  372. /** @addtogroup TIMEx_Exported_Functions_Group6
  373. * @{
  374. */
  375. /* Extension Callback *********************************************************/
  376. void HAL_TIMEx_CommutationCallback(TIM_HandleTypeDef* htim);
  377. void HAL_TIMEx_BreakCallback(TIM_HandleTypeDef* htim);
  378. void HAL_TIMEx_DMACommutationCplt(DMA_HandleTypeDef *hdma);
  379. /**
  380. * @}
  381. */
  382. /** @addtogroup TIMEx_Exported_Functions_Group7
  383. * @{
  384. */
  385. /* Extension Peripheral State functions **************************************/
  386. HAL_TIM_StateTypeDef HAL_TIMEx_HallSensor_GetState(TIM_HandleTypeDef* htim);
  387. /**
  388. * @}
  389. */
  390. /**
  391. * @}
  392. */
  393. /* Private types -------------------------------------------------------------*/
  394. /* Private variables ---------------------------------------------------------*/
  395. /* Private constants ---------------------------------------------------------*/
  396. /* Private macros ------------------------------------------------------------*/
  397. /** @defgroup TIMEx_Private_Macros TIMEx Private Macros
  398. * @{
  399. */
  400. #define IS_TIM_CHANNELS(CHANNEL) (((CHANNEL) == TIM_CHANNEL_1) || \
  401. ((CHANNEL) == TIM_CHANNEL_2) || \
  402. ((CHANNEL) == TIM_CHANNEL_3) || \
  403. ((CHANNEL) == TIM_CHANNEL_4) || \
  404. ((CHANNEL) == TIM_CHANNEL_5) || \
  405. ((CHANNEL) == TIM_CHANNEL_6) || \
  406. ((CHANNEL) == TIM_CHANNEL_ALL))
  407. #define IS_TIM_PWMI_CHANNELS(CHANNEL) (((CHANNEL) == TIM_CHANNEL_1) || \
  408. ((CHANNEL) == TIM_CHANNEL_2))
  409. #define IS_TIM_OPM_CHANNELS(CHANNEL) (((CHANNEL) == TIM_CHANNEL_1) || \
  410. ((CHANNEL) == TIM_CHANNEL_2))
  411. #define IS_TIM_COMPLEMENTARY_CHANNELS(CHANNEL) (((CHANNEL) == TIM_CHANNEL_1) || \
  412. ((CHANNEL) == TIM_CHANNEL_2) || \
  413. ((CHANNEL) == TIM_CHANNEL_3))
  414. #define IS_TIM_PWM_MODE(MODE) (((MODE) == TIM_OCMODE_PWM1) || \
  415. ((MODE) == TIM_OCMODE_PWM2) || \
  416. ((MODE) == TIM_OCMODE_COMBINED_PWM1) || \
  417. ((MODE) == TIM_OCMODE_COMBINED_PWM2) || \
  418. ((MODE) == TIM_OCMODE_ASSYMETRIC_PWM1) || \
  419. ((MODE) == TIM_OCMODE_ASSYMETRIC_PWM2))
  420. #define IS_TIM_OC_MODE(MODE) (((MODE) == TIM_OCMODE_TIMING) || \
  421. ((MODE) == TIM_OCMODE_ACTIVE) || \
  422. ((MODE) == TIM_OCMODE_INACTIVE) || \
  423. ((MODE) == TIM_OCMODE_TOGGLE) || \
  424. ((MODE) == TIM_OCMODE_FORCED_ACTIVE) || \
  425. ((MODE) == TIM_OCMODE_FORCED_INACTIVE) || \
  426. ((MODE) == TIM_OCMODE_RETRIGERRABLE_OPM1) || \
  427. ((MODE) == TIM_OCMODE_RETRIGERRABLE_OPM2))
  428. #define IS_TIM_REMAP(__TIM_REMAP__) (((__TIM_REMAP__) == TIM_TIM2_TIM8_TRGO)||\
  429. ((__TIM_REMAP__) == TIM_TIM2_ETH_PTP)||\
  430. ((__TIM_REMAP__) == TIM_TIM2_USBFS_SOF)||\
  431. ((__TIM_REMAP__) == TIM_TIM2_USBHS_SOF)||\
  432. ((__TIM_REMAP__) == TIM_TIM5_GPIO)||\
  433. ((__TIM_REMAP__) == TIM_TIM5_LSI)||\
  434. ((__TIM_REMAP__) == TIM_TIM5_LSE)||\
  435. ((__TIM_REMAP__) == TIM_TIM5_RTC)||\
  436. ((__TIM_REMAP__) == TIM_TIM11_GPIO)||\
  437. ((__TIM_REMAP__) == TIM_TIM11_SPDIFRX)||\
  438. ((__TIM_REMAP__) == TIM_TIM11_HSE)||\
  439. ((__TIM_REMAP__) == TIM_TIM11_MCO1))
  440. #define IS_TIM_DEADTIME(__DEADTIME__) ((__DEADTIME__) <= 0xFF)
  441. #define IS_TIM_BREAK_FILTER(__FILTER__) ((__FILTER__) <= 0xF)
  442. #define IS_TIM_CLEARINPUT_SOURCE(MODE) (((MODE) == TIM_CLEARINPUTSOURCE_ETR) || \
  443. ((MODE) == TIM_CLEARINPUTSOURCE_OCREFCLR) || \
  444. ((MODE) == TIM_CLEARINPUTSOURCE_NONE))
  445. #define IS_TIM_BREAK2_STATE(STATE) (((STATE) == TIM_BREAK2_ENABLE) || \
  446. ((STATE) == TIM_BREAK2_DISABLE))
  447. #define IS_TIM_BREAK2_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_BREAK2POLARITY_LOW) || \
  448. ((__POLARITY__) == TIM_BREAK2POLARITY_HIGH))
  449. #define IS_TIM_GROUPCH5(OCREF) ((((OCREF) & 0x1FFFFFFF) == 0x00000000))
  450. #define IS_TIM_TRGO2_SOURCE(SOURCE) (((SOURCE) == TIM_TRGO2_RESET) || \
  451. ((SOURCE) == TIM_TRGO2_ENABLE) || \
  452. ((SOURCE) == TIM_TRGO2_UPDATE) || \
  453. ((SOURCE) == TIM_TRGO2_OC1) || \
  454. ((SOURCE) == TIM_TRGO2_OC1REF) || \
  455. ((SOURCE) == TIM_TRGO2_OC2REF) || \
  456. ((SOURCE) == TIM_TRGO2_OC3REF) || \
  457. ((SOURCE) == TIM_TRGO2_OC3REF) || \
  458. ((SOURCE) == TIM_TRGO2_OC4REF) || \
  459. ((SOURCE) == TIM_TRGO2_OC5REF) || \
  460. ((SOURCE) == TIM_TRGO2_OC6REF) || \
  461. ((SOURCE) == TIM_TRGO2_OC4REF_RISINGFALLING) || \
  462. ((SOURCE) == TIM_TRGO2_OC6REF_RISINGFALLING) || \
  463. ((SOURCE) == TIM_TRGO2_OC4REF_RISING_OC6REF_RISING) || \
  464. ((SOURCE) == TIM_TRGO2_OC4REF_RISING_OC6REF_FALLING) || \
  465. ((SOURCE) == TIM_TRGO2_OC5REF_RISING_OC6REF_RISING) || \
  466. ((SOURCE) == TIM_TRGO2_OC5REF_RISING_OC6REF_FALLING))
  467. #define IS_TIM_SLAVE_MODE(MODE) (((MODE) == TIM_SLAVEMODE_DISABLE) || \
  468. ((MODE) == TIM_SLAVEMODE_RESET) || \
  469. ((MODE) == TIM_SLAVEMODE_GATED) || \
  470. ((MODE) == TIM_SLAVEMODE_TRIGGER) || \
  471. ((MODE) == TIM_SLAVEMODE_EXTERNAL1) || \
  472. ((MODE) == TIM_SLAVEMODE_COMBINED_RESETTRIGGER))
  473. /**
  474. * @}
  475. */
  476. /* Private functions ---------------------------------------------------------*/
  477. /** @defgroup TIMEx_Private_Functions TIMEx Private Functions
  478. * @{
  479. */
  480. /**
  481. * @}
  482. */
  483. /**
  484. * @}
  485. */
  486. /**
  487. * @}
  488. */
  489. #ifdef __cplusplus
  490. }
  491. #endif
  492. #endif /* __STM32F7xx_HAL_TIM_EX_H */
  493. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/