tim.c 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. /**
  2. ******************************************************************************
  3. * File Name : TIM.c
  4. * Description : This file provides code for the configuration
  5. * of the TIM instances.
  6. ******************************************************************************
  7. ** This notice applies to any and all portions of this file
  8. * that are not between comment pairs USER CODE BEGIN and
  9. * USER CODE END. Other portions of this file, whether
  10. * inserted by the user or by software development tools
  11. * are owned by their respective copyright owners.
  12. *
  13. * COPYRIGHT(c) 2019 STMicroelectronics
  14. *
  15. * Redistribution and use in source and binary forms, with or without modification,
  16. * are permitted provided that the following conditions are met:
  17. * 1. Redistributions of source code must retain the above copyright notice,
  18. * this list of conditions and the following disclaimer.
  19. * 2. Redistributions in binary form must reproduce the above copyright notice,
  20. * this list of conditions and the following disclaimer in the documentation
  21. * and/or other materials provided with the distribution.
  22. * 3. Neither the name of STMicroelectronics nor the names of its contributors
  23. * may be used to endorse or promote products derived from this software
  24. * without specific prior written permission.
  25. *
  26. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  27. * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  28. * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  29. * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
  30. * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  31. * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  32. * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  33. * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  34. * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  35. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  36. *
  37. ******************************************************************************
  38. */
  39. /* Includes ------------------------------------------------------------------*/
  40. #include "tim.h"
  41. /* USER CODE BEGIN 0 */
  42. /* USER CODE END 0 */
  43. TIM_HandleTypeDef htim1;
  44. TIM_HandleTypeDef htim2;
  45. /* TIM2 init function */
  46. void MX_TIM2_Init(void)
  47. {
  48. TIM_ClockConfigTypeDef sClockSourceConfig = {0};
  49. TIM_MasterConfigTypeDef sMasterConfig = {0};
  50. htim2.Instance = TIM2;
  51. htim2.Init.Prescaler = 0;
  52. htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
  53. htim2.Init.Period = 65535;
  54. htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  55. htim2.Init.RepetitionCounter = 0;
  56. htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  57. if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
  58. {
  59. Error_Handler();
  60. }
  61. sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_ETRMODE2;
  62. sClockSourceConfig.ClockPolarity = TIM_CLOCKPOLARITY_NONINVERTED;
  63. sClockSourceConfig.ClockPrescaler = TIM_CLOCKPRESCALER_DIV1;
  64. sClockSourceConfig.ClockFilter = 0;
  65. if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
  66. {
  67. Error_Handler();
  68. }
  69. sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  70. sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  71. if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
  72. {
  73. Error_Handler();
  74. }
  75. }
  76. void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
  77. {
  78. GPIO_InitTypeDef GPIO_InitStruct = {0};
  79. if(tim_baseHandle->Instance==TIM2)
  80. {
  81. /* USER CODE BEGIN TIM2_MspInit 0 */
  82. /* USER CODE END TIM2_MspInit 0 */
  83. /* TIM2 clock enable */
  84. __HAL_RCC_TIM2_CLK_ENABLE();
  85. __HAL_RCC_GPIOA_CLK_ENABLE();
  86. /**TIM2 GPIO Configuration
  87. PA0 ------> TIM2_ETR
  88. */
  89. GPIO_InitStruct.Pin = GPIO_PIN_0;
  90. GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  91. GPIO_InitStruct.Pull = GPIO_NOPULL;
  92. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  93. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  94. /* USER CODE BEGIN TIM2_MspInit 1 */
  95. /* USER CODE END TIM2_MspInit 1 */
  96. }
  97. }
  98. void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle)
  99. {
  100. if(tim_baseHandle->Instance==TIM2)
  101. {
  102. /* USER CODE BEGIN TIM2_MspDeInit 0 */
  103. /* USER CODE END TIM2_MspDeInit 0 */
  104. /* Peripheral clock disable */
  105. __HAL_RCC_TIM2_CLK_DISABLE();
  106. /**TIM2 GPIO Configuration
  107. PA0 ------> TIM2_ETR
  108. */
  109. HAL_GPIO_DeInit(GPIOA, GPIO_PIN_0);
  110. /* USER CODE BEGIN TIM2_MspDeInit 1 */
  111. /* USER CODE END TIM2_MspDeInit 1 */
  112. }
  113. }
  114. /* TIM1 init function */
  115. void MX_TIM1_Init(void)
  116. {
  117. TIM_MasterConfigTypeDef sMasterConfig = {0};
  118. TIM_OC_InitTypeDef sConfigOC = {0};
  119. htim1.Instance = TIM1;
  120. htim1.Init.Prescaler = 0;
  121. htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
  122. htim1.Init.Period = 71;
  123. htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  124. htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
  125. if (HAL_TIM_PWM_Init(&htim1) != HAL_OK)
  126. {
  127. Error_Handler();
  128. }
  129. sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  130. sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  131. if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK)
  132. {
  133. Error_Handler();
  134. }
  135. sConfigOC.OCMode = TIM_OCMODE_PWM1;
  136. sConfigOC.Pulse = 36;
  137. sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
  138. sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  139. if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
  140. {
  141. Error_Handler();
  142. }
  143. HAL_TIM_MspPostInit(&htim1);
  144. HAL_TIM_PWM_MspInit(&htim1);
  145. }
  146. void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef* tim_pwmHandle)
  147. {
  148. if(tim_pwmHandle->Instance==TIM1)
  149. {
  150. /* USER CODE BEGIN TIM1_MspInit 0 */
  151. /* USER CODE END TIM1_MspInit 0 */
  152. /* TIM1 clock enable */
  153. __HAL_RCC_TIM1_CLK_ENABLE();
  154. /* USER CODE BEGIN TIM1_MspInit 1 */
  155. /* USER CODE END TIM1_MspInit 1 */
  156. }
  157. }
  158. void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle)
  159. {
  160. GPIO_InitTypeDef GPIO_InitStruct = {0};
  161. if(timHandle->Instance==TIM1)
  162. {
  163. /* USER CODE BEGIN TIM1_MspPostInit 0 */
  164. /* USER CODE END TIM1_MspPostInit 0 */
  165. __HAL_RCC_GPIOA_CLK_ENABLE();
  166. /**TIM1 GPIO Configuration
  167. PA8 ------> TIM1_CH1
  168. */
  169. GPIO_InitStruct.Pin = GPIO_PIN_8;
  170. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  171. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  172. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  173. /* USER CODE BEGIN TIM1_MspPostInit 1 */
  174. HAL_TIM_OC_Start(&htim1, TIM_CHANNEL_1);
  175. /* USER CODE END TIM1_MspPostInit 1 */
  176. }
  177. }
  178. void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef* tim_pwmHandle)
  179. {
  180. if(tim_pwmHandle->Instance==TIM1)
  181. {
  182. /* USER CODE BEGIN TIM1_MspDeInit 0 */
  183. /* USER CODE END TIM1_MspDeInit 0 */
  184. /* Peripheral clock disable */
  185. __HAL_RCC_TIM1_CLK_DISABLE();
  186. /* USER CODE BEGIN TIM1_MspDeInit 1 */
  187. /* USER CODE END TIM1_MspDeInit 1 */
  188. }
  189. }
  190. /* USER CODE BEGIN 1 */
  191. /* USER CODE END 1 */
  192. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/