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.

290 lines
7.5 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  1. /* USER CODE BEGIN Header */
  2. /**
  3. ******************************************************************************
  4. * @file tim.c
  5. * @brief This file provides code for the configuration
  6. * of the TIM instances.
  7. ******************************************************************************
  8. * @attention
  9. *
  10. * Copyright (c) 2023 STMicroelectronics.
  11. * All rights reserved.
  12. *
  13. * This software is licensed under terms that can be found in the LICENSE file
  14. * in the root directory of this software component.
  15. * If no LICENSE file comes with this software, it is provided AS-IS.
  16. *
  17. ******************************************************************************
  18. */
  19. /* USER CODE END Header */
  20. /* Includes ------------------------------------------------------------------*/
  21. #include "tim.h"
  22. /* USER CODE BEGIN 0 */
  23. /* USER CODE END 0 */
  24. TIM_HandleTypeDef htim4;
  25. TIM_HandleTypeDef htim6;
  26. TIM_HandleTypeDef htim8;
  27. /* TIM4 init function */
  28. void MX_TIM4_Init(void)
  29. {
  30. /* USER CODE BEGIN TIM4_Init 0 */
  31. /* USER CODE END TIM4_Init 0 */
  32. TIM_Encoder_InitTypeDef sConfig = {0};
  33. TIM_MasterConfigTypeDef sMasterConfig = {0};
  34. /* USER CODE BEGIN TIM4_Init 1 */
  35. /* USER CODE END TIM4_Init 1 */
  36. htim4.Instance = TIM4;
  37. htim4.Init.Prescaler = 0;
  38. htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
  39. htim4.Init.Period = 65535;
  40. htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  41. htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  42. sConfig.EncoderMode = TIM_ENCODERMODE_TI12;
  43. sConfig.IC1Polarity = TIM_ICPOLARITY_RISING;
  44. sConfig.IC1Selection = TIM_ICSELECTION_DIRECTTI;
  45. sConfig.IC1Prescaler = TIM_ICPSC_DIV1;
  46. sConfig.IC1Filter = 0;
  47. sConfig.IC2Polarity = TIM_ICPOLARITY_RISING;
  48. sConfig.IC2Selection = TIM_ICSELECTION_DIRECTTI;
  49. sConfig.IC2Prescaler = TIM_ICPSC_DIV1;
  50. sConfig.IC2Filter = 0;
  51. if (HAL_TIM_Encoder_Init(&htim4, &sConfig) != HAL_OK)
  52. {
  53. Error_Handler();
  54. }
  55. sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  56. sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  57. if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK)
  58. {
  59. Error_Handler();
  60. }
  61. /* USER CODE BEGIN TIM4_Init 2 */
  62. /* USER CODE END TIM4_Init 2 */
  63. }
  64. /* TIM6 init function */
  65. void MX_TIM6_Init(void)
  66. {
  67. /* USER CODE BEGIN TIM6_Init 0 */
  68. /* USER CODE END TIM6_Init 0 */
  69. TIM_MasterConfigTypeDef sMasterConfig = {0};
  70. /* USER CODE BEGIN TIM6_Init 1 */
  71. /* USER CODE END TIM6_Init 1 */
  72. htim6.Instance = TIM6;
  73. htim6.Init.Prescaler = 84-1;
  74. htim6.Init.CounterMode = TIM_COUNTERMODE_UP;
  75. htim6.Init.Period = 1000-1;
  76. htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
  77. if (HAL_TIM_Base_Init(&htim6) != HAL_OK)
  78. {
  79. Error_Handler();
  80. }
  81. sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  82. sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  83. if (HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig) != HAL_OK)
  84. {
  85. Error_Handler();
  86. }
  87. /* USER CODE BEGIN TIM6_Init 2 */
  88. /* USER CODE END TIM6_Init 2 */
  89. }
  90. /* TIM8 init function */
  91. void MX_TIM8_Init(void)
  92. {
  93. /* USER CODE BEGIN TIM8_Init 0 */
  94. /* USER CODE END TIM8_Init 0 */
  95. TIM_Encoder_InitTypeDef sConfig = {0};
  96. TIM_MasterConfigTypeDef sMasterConfig = {0};
  97. /* USER CODE BEGIN TIM8_Init 1 */
  98. /* USER CODE END TIM8_Init 1 */
  99. htim8.Instance = TIM8;
  100. htim8.Init.Prescaler = 0;
  101. htim8.Init.CounterMode = TIM_COUNTERMODE_UP;
  102. htim8.Init.Period = 65535;
  103. htim8.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  104. htim8.Init.RepetitionCounter = 0;
  105. htim8.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  106. sConfig.EncoderMode = TIM_ENCODERMODE_TI12;
  107. sConfig.IC1Polarity = TIM_ICPOLARITY_RISING;
  108. sConfig.IC1Selection = TIM_ICSELECTION_DIRECTTI;
  109. sConfig.IC1Prescaler = TIM_ICPSC_DIV1;
  110. sConfig.IC1Filter = 0;
  111. sConfig.IC2Polarity = TIM_ICPOLARITY_RISING;
  112. sConfig.IC2Selection = TIM_ICSELECTION_DIRECTTI;
  113. sConfig.IC2Prescaler = TIM_ICPSC_DIV1;
  114. sConfig.IC2Filter = 0;
  115. if (HAL_TIM_Encoder_Init(&htim8, &sConfig) != HAL_OK)
  116. {
  117. Error_Handler();
  118. }
  119. sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  120. sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  121. if (HAL_TIMEx_MasterConfigSynchronization(&htim8, &sMasterConfig) != HAL_OK)
  122. {
  123. Error_Handler();
  124. }
  125. /* USER CODE BEGIN TIM8_Init 2 */
  126. /* USER CODE END TIM8_Init 2 */
  127. }
  128. void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef* tim_encoderHandle)
  129. {
  130. GPIO_InitTypeDef GPIO_InitStruct = {0};
  131. if(tim_encoderHandle->Instance==TIM4)
  132. {
  133. /* USER CODE BEGIN TIM4_MspInit 0 */
  134. /* USER CODE END TIM4_MspInit 0 */
  135. /* TIM4 clock enable */
  136. __HAL_RCC_TIM4_CLK_ENABLE();
  137. __HAL_RCC_GPIOD_CLK_ENABLE();
  138. /**TIM4 GPIO Configuration
  139. PD12 ------> TIM4_CH1
  140. PD13 ------> TIM4_CH2
  141. */
  142. GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_13;
  143. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  144. GPIO_InitStruct.Pull = GPIO_PULLUP;
  145. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  146. GPIO_InitStruct.Alternate = GPIO_AF2_TIM4;
  147. HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
  148. /* USER CODE BEGIN TIM4_MspInit 1 */
  149. /* USER CODE END TIM4_MspInit 1 */
  150. }
  151. else if(tim_encoderHandle->Instance==TIM8)
  152. {
  153. /* USER CODE BEGIN TIM8_MspInit 0 */
  154. /* USER CODE END TIM8_MspInit 0 */
  155. /* TIM8 clock enable */
  156. __HAL_RCC_TIM8_CLK_ENABLE();
  157. __HAL_RCC_GPIOC_CLK_ENABLE();
  158. /**TIM8 GPIO Configuration
  159. PC6 ------> TIM8_CH1
  160. PC7 ------> TIM8_CH2
  161. */
  162. GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
  163. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  164. GPIO_InitStruct.Pull = GPIO_PULLUP;
  165. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  166. GPIO_InitStruct.Alternate = GPIO_AF3_TIM8;
  167. HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
  168. /* USER CODE BEGIN TIM8_MspInit 1 */
  169. /* USER CODE END TIM8_MspInit 1 */
  170. }
  171. }
  172. void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
  173. {
  174. if(tim_baseHandle->Instance==TIM6)
  175. {
  176. /* USER CODE BEGIN TIM6_MspInit 0 */
  177. /* USER CODE END TIM6_MspInit 0 */
  178. /* TIM6 clock enable */
  179. __HAL_RCC_TIM6_CLK_ENABLE();
  180. /* TIM6 interrupt Init */
  181. HAL_NVIC_SetPriority(TIM6_DAC_IRQn, 5, 0);
  182. HAL_NVIC_EnableIRQ(TIM6_DAC_IRQn);
  183. /* USER CODE BEGIN TIM6_MspInit 1 */
  184. /* USER CODE END TIM6_MspInit 1 */
  185. }
  186. }
  187. void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef* tim_encoderHandle)
  188. {
  189. if(tim_encoderHandle->Instance==TIM4)
  190. {
  191. /* USER CODE BEGIN TIM4_MspDeInit 0 */
  192. /* USER CODE END TIM4_MspDeInit 0 */
  193. /* Peripheral clock disable */
  194. __HAL_RCC_TIM4_CLK_DISABLE();
  195. /**TIM4 GPIO Configuration
  196. PD12 ------> TIM4_CH1
  197. PD13 ------> TIM4_CH2
  198. */
  199. HAL_GPIO_DeInit(GPIOD, GPIO_PIN_12|GPIO_PIN_13);
  200. /* USER CODE BEGIN TIM4_MspDeInit 1 */
  201. /* USER CODE END TIM4_MspDeInit 1 */
  202. }
  203. else if(tim_encoderHandle->Instance==TIM8)
  204. {
  205. /* USER CODE BEGIN TIM8_MspDeInit 0 */
  206. /* USER CODE END TIM8_MspDeInit 0 */
  207. /* Peripheral clock disable */
  208. __HAL_RCC_TIM8_CLK_DISABLE();
  209. /**TIM8 GPIO Configuration
  210. PC6 ------> TIM8_CH1
  211. PC7 ------> TIM8_CH2
  212. */
  213. HAL_GPIO_DeInit(GPIOC, GPIO_PIN_6|GPIO_PIN_7);
  214. /* USER CODE BEGIN TIM8_MspDeInit 1 */
  215. /* USER CODE END TIM8_MspDeInit 1 */
  216. }
  217. }
  218. void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle)
  219. {
  220. if(tim_baseHandle->Instance==TIM6)
  221. {
  222. /* USER CODE BEGIN TIM6_MspDeInit 0 */
  223. /* USER CODE END TIM6_MspDeInit 0 */
  224. /* Peripheral clock disable */
  225. __HAL_RCC_TIM6_CLK_DISABLE();
  226. /* TIM6 interrupt Deinit */
  227. HAL_NVIC_DisableIRQ(TIM6_DAC_IRQn);
  228. /* USER CODE BEGIN TIM6_MspDeInit 1 */
  229. /* USER CODE END TIM6_MspDeInit 1 */
  230. }
  231. }
  232. /* USER CODE BEGIN 1 */
  233. /* USER CODE END 1 */