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.
 
 
 

247 lines
12 KiB

  1. /**
  2. ******************************************************************************
  3. * @file stm32l0xx_hal_tim_ex.h
  4. * @author MCD Application Team
  5. * @brief Header file of TIM HAL Extended 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 STM32L0xx_HAL_TIM_EX_H
  21. #define STM32L0xx_HAL_TIM_EX_H
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25. /* Includes ------------------------------------------------------------------*/
  26. #include "stm32l0xx_hal_def.h"
  27. /** @addtogroup STM32L0xx_HAL_Driver
  28. * @{
  29. */
  30. /** @addtogroup TIMEx
  31. * @{
  32. */
  33. /* Exported types ------------------------------------------------------------*/
  34. /** @defgroup TIMEx_Exported_Types TIM Extended Exported Types
  35. * @{
  36. */
  37. /**
  38. * @}
  39. */
  40. /* End of exported types -----------------------------------------------------*/
  41. /* Exported constants --------------------------------------------------------*/
  42. /** @defgroup TIMEx_Exported_Constants TIM Extended Exported Constants
  43. * @{
  44. */
  45. /** @defgroup TIMEx_Remap TIM Extended Remapping
  46. * @{
  47. */
  48. #define TIM2_ETR_GPIO 0x00000000U /*!< TIM2 ETR input is connected to ORed GPIOs */
  49. #if defined(RCC_HSI48_SUPPORT)
  50. #define TIM2_ETR_HSI48 TIM2_OR_ETR_RMP_2 /*!< TIM2 ETR input is connected to HSI48 clock */
  51. #endif /* RCC_HSI48_SUPPORT */
  52. #define TIM2_ETR_HSI16 (TIM2_OR_ETR_RMP_1 | TIM2_OR_ETR_RMP_0) /*!< TIM2 ETR input is connected to HSI16 clock */
  53. #define TIM2_ETR_LSE (TIM2_OR_ETR_RMP_2 | TIM2_OR_ETR_RMP_0) /*!< TIM2 ETR input is connected to LSE clock */
  54. #if defined(COMP1) && defined(COMP2)
  55. #define TIM2_ETR_COMP2_OUT (TIM2_OR_ETR_RMP_2 | TIM2_OR_ETR_RMP_1) /*!< TIM2 ETR input is connected to COMP2_OUT */
  56. #define TIM2_ETR_COMP1_OUT TIM2_OR_ETR_RMP /*!< TIM2 ETR input is connected to COMP1_OUT */
  57. #endif /* COMP1 && COMP2 */
  58. #define TIM2_TI4_GPIO 0x00000000U /*!< TIM2 TI4 input connected to ORed GPIOs */
  59. #if defined(COMP1) && defined(COMP2)
  60. #define TIM2_TI4_COMP2 TIM2_OR_TI4_RMP_0 /*!< TIM2 TI4 input connected to COMP2_OUT */
  61. #define TIM2_TI4_COMP1 TIM2_OR_TI4_RMP_1 /*!< TIM2 TI4 input connected to COMP1_OUT */
  62. #endif /* COMP1 && COMP2 */
  63. #if defined(TIM3)
  64. #if defined(USB)
  65. #define TIM3_TI4_USB_NOE 0x00000000U /*!< USB_NOE selected selected for PC9 (AF2) remapping */
  66. #define TIM3_TI4_GPIOC9_AF2 TIM3_OR_TI4_RMP /*!< TIM3_CH4 selected for PC9 (AF2) remapping */
  67. #endif /* USB */
  68. #define TIM3_TI2_GPIO_DEF 0x00000000U /*!< TIM3_CH2 selected for PB5 (AF4) remapping */
  69. #define TIM3_TI2_GPIOB5_AF4 TIM3_OR_TI2_RMP /*!< TIM22_CH2 selected for PB5 (AF4) remapping */
  70. #if defined(USB)
  71. #define TIM3_TI1_USB_SOF 0x00000000U /*!< TIM3 TI1 input connected to USB_SOF */
  72. #define TIM3_TI1_GPIO TIM3_OR_TI1_RMP /*!< TIM3 TI1 input connected to ORed GPIOs */
  73. #endif /* USB */
  74. #define TIM3_ETR_GPIO 0x00000000U /*!< TIM3 ETR input connected to ORed GPIOs */
  75. #define TIM3_ETR_HSI TIM3_OR_ETR_RMP_1 /*!< TIM3_ETR input is connected to HSI48 clock */
  76. #endif /* TIM3 */
  77. #define TIM21_ETR_GPIO 0x00000000U /*!< TIM21 ETR input connected to ORed GPIOs */
  78. #if defined(COMP1) && defined(COMP2)
  79. #define TIM21_ETR_COMP2_OUT TIM21_OR_ETR_RMP_0 /*!< TIM21 ETR input connected to COMP2_OUT */
  80. #define TIM21_ETR_COMP1_OUT TIM21_OR_ETR_RMP_1 /*!< TIM21 ETR input connected to COMP1_OUT */
  81. #endif /* COMP1 && COMP2 */
  82. #define TIM21_ETR_LSE TIM21_OR_ETR_RMP /*!< TIM21 ETR input connected to LSE clock */
  83. #define TIM21_TI1_GPIO 0x00000000U /*!< TIM21 TI1 input connected to ORed GPIOs */
  84. #define TIM21_TI1_MCO TIM21_OR_TI1_RMP /*!< TIM21 TI1 input connected to MCO clock */
  85. #define TIM21_TI1_RTC_WKUT_IT TIM21_OR_TI1_RMP_0 /*!< TIM21 TI1 input connected to RTC WAKEUP interrupt */
  86. #define TIM21_TI1_HSE_RTC TIM21_OR_TI1_RMP_1 /*!< TIM21 TI1 input connected to HSE_RTC clock */
  87. #define TIM21_TI1_MSI (TIM21_OR_TI1_RMP_0 | TIM21_OR_TI1_RMP_1) /*!< TIM21 TI1 input connected to MSI clock */
  88. #define TIM21_TI1_LSE TIM21_OR_TI1_RMP_2 /*!< TIM21 TI1 input connected to LSE clock */
  89. #define TIM21_TI1_LSI (TIM21_OR_TI1_RMP_2 | TIM21_OR_TI1_RMP_0) /*!< TIM21 TI1 input connected to LSI clock */
  90. #if defined(COMP1)
  91. #define TIM21_TI1_COMP1_OUT (TIM21_OR_TI1_RMP_2 | TIM21_OR_TI1_RMP_1) /*!< TIM21 TI1 input connected to COMP1_OUT */
  92. #endif /* COMP1 */
  93. #define TIM21_TI2_GPIO 0x00000000U /*!< TIM21 TI2 input connected to ORed GPIOs */
  94. #if defined(COMP2)
  95. #define TIM21_TI2_COMP2_OUT TIM21_OR_TI2_RMP /*!< TIM21 TI2 input connected to COMP2_OUT */
  96. #endif /* COMP2 */
  97. #if defined(TIM22)
  98. #define TIM22_ETR_GPIO 0x00000000U /*!< TIM22 ETR input is connected to ORed GPIOs */
  99. #if defined(COMP1) && defined(COMP2)
  100. #define TIM22_ETR_COMP2_OUT TIM22_OR_ETR_RMP_0 /*!< TIM22 ETR input is connected to COMP2_OUT */
  101. #define TIM22_ETR_COMP1_OUT TIM22_OR_ETR_RMP_1 /*!< TIM22 ETR input is connected to COMP1_OUT */
  102. #endif /* COMP1 && COMP2 */
  103. #define TIM22_ETR_LSE TIM22_OR_ETR_RMP /*!< TIM22 ETR input is connected to LSE clock */
  104. #define TIM22_TI1_GPIO 0x00000000U /*!< TIM22 TI1 input is connected to ORed GPIOs */
  105. #if defined(COMP1) && defined(COMP2)
  106. #define TIM22_TI1_COMP2_OUT TIM22_OR_TI1_RMP_0 /*!< TIM22 TI1 input is connected to COMP2_OUT */
  107. #define TIM22_TI1_COMP1_OUT TIM22_OR_TI1_RMP_1 /*!< TIM22 TI1 input is connected to COMP1_OUT */
  108. #endif /* COMP1 && COMP2 */
  109. #endif /* TIM22 */
  110. /**
  111. * @}
  112. */
  113. /**
  114. * @}
  115. */
  116. /* End of exported constants -------------------------------------------------*/
  117. /* Exported macro ------------------------------------------------------------*/
  118. /** @defgroup TIMEx_Exported_Macros TIM Extended Exported Macros
  119. * @{
  120. */
  121. /**
  122. * @}
  123. */
  124. /* End of exported macro -----------------------------------------------------*/
  125. /* Private macro -------------------------------------------------------------*/
  126. /** @defgroup TIMEx_Private_Macros TIM Extended Private Macros
  127. * @{
  128. */
  129. #if defined(TIM3) && defined(TIM22)
  130. #define IS_TIM_REMAP(__INSTANCE__, __TIM_REMAP__) \
  131. ((((__INSTANCE__) == TIM2) && ((__TIM_REMAP__) <= (TIM2_OR_TI4_RMP | TIM2_OR_ETR_RMP))) || \
  132. (((__INSTANCE__) == TIM22) && ((__TIM_REMAP__) <= (TIM22_OR_TI1_RMP | TIM22_OR_ETR_RMP))) || \
  133. (((__INSTANCE__) == TIM21) && ((__TIM_REMAP__) <= (TIM21_OR_ETR_RMP | TIM21_OR_TI1_RMP | TIM21_OR_TI2_RMP))) || \
  134. (((__INSTANCE__) == TIM3) && ((__TIM_REMAP__) <= (TIM3_OR_ETR_RMP | TIM3_OR_TI1_RMP | TIM3_OR_TI2_RMP | TIM3_OR_TI4_RMP))))
  135. #define IS_CHANNEL_AVAILABLE(__INSTANCE__, __CHANNEL__) \
  136. ((((__INSTANCE__) == TIM2) && (((__CHANNEL__) == TIM_CHANNEL_1) || \
  137. ((__CHANNEL__) == TIM_CHANNEL_2) || \
  138. ((__CHANNEL__) == TIM_CHANNEL_3) || \
  139. ((__CHANNEL__) == TIM_CHANNEL_4))) || \
  140. (((__INSTANCE__) == TIM3) && (((__CHANNEL__) == TIM_CHANNEL_1) || \
  141. ((__CHANNEL__) == TIM_CHANNEL_2) || \
  142. ((__CHANNEL__) == TIM_CHANNEL_3) || \
  143. ((__CHANNEL__) == TIM_CHANNEL_4))) || \
  144. (((__INSTANCE__) == TIM21) && (((__CHANNEL__) == TIM_CHANNEL_1) || \
  145. ((__CHANNEL__) == TIM_CHANNEL_2))) || \
  146. (((__INSTANCE__) == TIM22) && (((__CHANNEL__) == TIM_CHANNEL_1) || \
  147. ((__CHANNEL__) == TIM_CHANNEL_2))))
  148. #elif defined(TIM22)
  149. #define IS_TIM_REMAP(__INSTANCE__, __TIM_REMAP__) \
  150. ((((__INSTANCE__) == TIM2) && ((__TIM_REMAP__) <= (TIM2_OR_TI4_RMP | TIM2_OR_ETR_RMP))) || \
  151. (((__INSTANCE__) == TIM22) && ((__TIM_REMAP__) <= (TIM22_OR_TI1_RMP | TIM22_OR_ETR_RMP))) || \
  152. (((__INSTANCE__) == TIM21) && ((__TIM_REMAP__) <= (TIM21_OR_ETR_RMP | TIM21_OR_TI1_RMP | TIM21_OR_TI2_RMP))))
  153. #define IS_CHANNEL_AVAILABLE(__INSTANCE__, __CHANNEL__) \
  154. ((((__INSTANCE__) == TIM2) && (((__CHANNEL__) == TIM_CHANNEL_1) || \
  155. ((__CHANNEL__) == TIM_CHANNEL_2) || \
  156. ((__CHANNEL__) == TIM_CHANNEL_3) || \
  157. ((__CHANNEL__) == TIM_CHANNEL_4))) || \
  158. (((__INSTANCE__) == TIM21) && (((__CHANNEL__) == TIM_CHANNEL_1) || \
  159. ((__CHANNEL__) == TIM_CHANNEL_2))) || \
  160. (((__INSTANCE__) == TIM22) && (((__CHANNEL__) == TIM_CHANNEL_1) || \
  161. ((__CHANNEL__) == TIM_CHANNEL_2))))
  162. #else
  163. #define IS_TIM_REMAP(__INSTANCE__, __TIM_REMAP__) \
  164. ((((__INSTANCE__) == TIM2) && ((__TIM_REMAP__) <= (TIM2_OR_TI4_RMP | TIM2_OR_ETR_RMP))) || \
  165. (((__INSTANCE__) == TIM21) && ((__TIM_REMAP__) <= (TIM21_OR_ETR_RMP | TIM21_OR_TI1_RMP | TIM21_OR_TI2_RMP))))
  166. #define IS_CHANNEL_AVAILABLE(__INSTANCE__, __CHANNEL__) \
  167. ((((__INSTANCE__) == TIM2) && (((__CHANNEL__) == TIM_CHANNEL_1) || \
  168. ((__CHANNEL__) == TIM_CHANNEL_2) || \
  169. ((__CHANNEL__) == TIM_CHANNEL_3) || \
  170. ((__CHANNEL__) == TIM_CHANNEL_4))) || \
  171. (((__INSTANCE__) == TIM21) && (((__CHANNEL__) == TIM_CHANNEL_1) || \
  172. ((__CHANNEL__) == TIM_CHANNEL_2))))
  173. #endif /* TIM3 && TIM22 */
  174. /**
  175. * @}
  176. */
  177. /* End of private macro ------------------------------------------------------*/
  178. /* Exported functions --------------------------------------------------------*/
  179. /** @addtogroup TIMEx_Exported_Functions TIM Extended Exported Functions
  180. * @{
  181. */
  182. /** @addtogroup TIMEx_Exported_Functions_Group5 Extended Peripheral Control functions
  183. * @brief Peripheral Control functions
  184. * @{
  185. */
  186. /* Extended Control functions ************************************************/
  187. HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, TIM_MasterConfigTypeDef *sMasterConfig);
  188. HAL_StatusTypeDef HAL_TIMEx_RemapConfig(TIM_HandleTypeDef *htim, uint32_t Remap);
  189. /**
  190. * @}
  191. */
  192. /**
  193. * @}
  194. */
  195. /* End of exported functions -------------------------------------------------*/
  196. /**
  197. * @}
  198. */
  199. /**
  200. * @}
  201. */
  202. #ifdef __cplusplus
  203. }
  204. #endif
  205. #endif /* STM32L0xx_HAL_TIM_EX_H */
  206. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/