tim.c 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361
  1. /**
  2. ******************************************************************************
  3. * @file tim.c
  4. * @brief This file provides code for the configuration
  5. * of the TIM instances.
  6. ******************************************************************************
  7. * @attention
  8. *
  9. * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
  10. * All rights reserved.</center></h2>
  11. *
  12. * This software component is licensed by ST under Ultimate Liberty license
  13. * SLA0044, the "License"; You may not use this file except in compliance with
  14. * the License. You may obtain a copy of the License at:
  15. * www.st.com/SLA0044
  16. *
  17. ******************************************************************************
  18. */
  19. /* Includes ------------------------------------------------------------------*/
  20. #include "tim.h"
  21. /* USER CODE BEGIN 0 */
  22. /* USER CODE END 0 */
  23. TIM_HandleTypeDef htim1;
  24. TIM_HandleTypeDef htim2;
  25. TIM_HandleTypeDef htim16;
  26. /* TIM1 init function */
  27. void MX_TIM1_Init(void)
  28. {
  29. TIM_ClockConfigTypeDef sClockSourceConfig = {0};
  30. TIM_MasterConfigTypeDef sMasterConfig = {0};
  31. TIM_OC_InitTypeDef sConfigOC = {0};
  32. TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0};
  33. htim1.Instance = TIM1;
  34. htim1.Init.Prescaler = 0;
  35. htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
  36. htim1.Init.Period = 65535;
  37. htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  38. htim1.Init.RepetitionCounter = 0;
  39. htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  40. if (HAL_TIM_Base_Init(&htim1) != HAL_OK)
  41. {
  42. Error_Handler();
  43. }
  44. sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  45. if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK)
  46. {
  47. Error_Handler();
  48. }
  49. if (HAL_TIM_OC_Init(&htim1) != HAL_OK)
  50. {
  51. Error_Handler();
  52. }
  53. if (HAL_TIM_PWM_Init(&htim1) != HAL_OK)
  54. {
  55. Error_Handler();
  56. }
  57. sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  58. sMasterConfig.MasterOutputTrigger2 = TIM_TRGO2_RESET;
  59. sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  60. if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK)
  61. {
  62. Error_Handler();
  63. }
  64. sConfigOC.OCMode = TIM_OCMODE_TIMING;
  65. sConfigOC.Pulse = 0;
  66. sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
  67. sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
  68. sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  69. sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
  70. sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
  71. if (HAL_TIM_OC_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
  72. {
  73. Error_Handler();
  74. }
  75. sConfigOC.OCMode = TIM_OCMODE_PWM1;
  76. if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)
  77. {
  78. Error_Handler();
  79. }
  80. sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE;
  81. sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE;
  82. sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;
  83. sBreakDeadTimeConfig.DeadTime = 0;
  84. sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;
  85. sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
  86. sBreakDeadTimeConfig.BreakFilter = 0;
  87. sBreakDeadTimeConfig.BreakAFMode = TIM_BREAK_AFMODE_INPUT;
  88. sBreakDeadTimeConfig.Break2State = TIM_BREAK2_DISABLE;
  89. sBreakDeadTimeConfig.Break2Polarity = TIM_BREAK2POLARITY_HIGH;
  90. sBreakDeadTimeConfig.Break2Filter = 0;
  91. sBreakDeadTimeConfig.Break2AFMode = TIM_BREAK_AFMODE_INPUT;
  92. sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
  93. if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK)
  94. {
  95. Error_Handler();
  96. }
  97. HAL_TIM_MspPostInit(&htim1);
  98. }
  99. /* TIM2 init function */
  100. void MX_TIM2_Init(void)
  101. {
  102. TIM_ClockConfigTypeDef sClockSourceConfig = {0};
  103. TIM_MasterConfigTypeDef sMasterConfig = {0};
  104. TIM_IC_InitTypeDef sConfigIC = {0};
  105. htim2.Instance = TIM2;
  106. htim2.Init.Prescaler = 64-1;
  107. htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
  108. htim2.Init.Period = 4294967295;
  109. htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  110. htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
  111. if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
  112. {
  113. Error_Handler();
  114. }
  115. sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  116. if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
  117. {
  118. Error_Handler();
  119. }
  120. if (HAL_TIM_IC_Init(&htim2) != HAL_OK)
  121. {
  122. Error_Handler();
  123. }
  124. sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  125. sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  126. if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
  127. {
  128. Error_Handler();
  129. }
  130. sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_FALLING;
  131. sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI;
  132. sConfigIC.ICPrescaler = TIM_ICPSC_DIV1;
  133. sConfigIC.ICFilter = 0;
  134. if (HAL_TIM_IC_ConfigChannel(&htim2, &sConfigIC, TIM_CHANNEL_1) != HAL_OK)
  135. {
  136. Error_Handler();
  137. }
  138. sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_RISING;
  139. sConfigIC.ICSelection = TIM_ICSELECTION_INDIRECTTI;
  140. if (HAL_TIM_IC_ConfigChannel(&htim2, &sConfigIC, TIM_CHANNEL_2) != HAL_OK)
  141. {
  142. Error_Handler();
  143. }
  144. }
  145. /* TIM16 init function */
  146. void MX_TIM16_Init(void)
  147. {
  148. TIM_OC_InitTypeDef sConfigOC = {0};
  149. TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0};
  150. htim16.Instance = TIM16;
  151. htim16.Init.Prescaler = 500 - 1;
  152. htim16.Init.CounterMode = TIM_COUNTERMODE_UP;
  153. htim16.Init.Period = 291;
  154. htim16.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  155. htim16.Init.RepetitionCounter = 0;
  156. htim16.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  157. if (HAL_TIM_Base_Init(&htim16) != HAL_OK)
  158. {
  159. Error_Handler();
  160. }
  161. if (HAL_TIM_PWM_Init(&htim16) != HAL_OK)
  162. {
  163. Error_Handler();
  164. }
  165. sConfigOC.OCMode = TIM_OCMODE_PWM1;
  166. sConfigOC.Pulse = 145;
  167. sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
  168. sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
  169. sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  170. sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
  171. sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
  172. if (HAL_TIM_PWM_ConfigChannel(&htim16, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
  173. {
  174. Error_Handler();
  175. }
  176. sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE;
  177. sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE;
  178. sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;
  179. sBreakDeadTimeConfig.DeadTime = 0;
  180. sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;
  181. sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
  182. sBreakDeadTimeConfig.BreakFilter = 0;
  183. sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
  184. if (HAL_TIMEx_ConfigBreakDeadTime(&htim16, &sBreakDeadTimeConfig) != HAL_OK)
  185. {
  186. Error_Handler();
  187. }
  188. HAL_TIM_MspPostInit(&htim16);
  189. }
  190. void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
  191. {
  192. GPIO_InitTypeDef GPIO_InitStruct = {0};
  193. if(tim_baseHandle->Instance==TIM1)
  194. {
  195. /* USER CODE BEGIN TIM1_MspInit 0 */
  196. /* USER CODE END TIM1_MspInit 0 */
  197. /* TIM1 clock enable */
  198. __HAL_RCC_TIM1_CLK_ENABLE();
  199. /* TIM1 interrupt Init */
  200. HAL_NVIC_SetPriority(TIM1_TRG_COM_TIM17_IRQn, 0, 0);
  201. HAL_NVIC_EnableIRQ(TIM1_TRG_COM_TIM17_IRQn);
  202. /* USER CODE BEGIN TIM1_MspInit 1 */
  203. /* USER CODE END TIM1_MspInit 1 */
  204. }
  205. else if(tim_baseHandle->Instance==TIM2)
  206. {
  207. /* USER CODE BEGIN TIM2_MspInit 0 */
  208. /* USER CODE END TIM2_MspInit 0 */
  209. /* TIM2 clock enable */
  210. __HAL_RCC_TIM2_CLK_ENABLE();
  211. __HAL_RCC_GPIOA_CLK_ENABLE();
  212. /**TIM2 GPIO Configuration
  213. PA0 ------> TIM2_CH1
  214. */
  215. GPIO_InitStruct.Pin = IR_RX_Pin;
  216. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  217. GPIO_InitStruct.Pull = GPIO_NOPULL;
  218. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  219. GPIO_InitStruct.Alternate = GPIO_AF1_TIM2;
  220. HAL_GPIO_Init(IR_RX_GPIO_Port, &GPIO_InitStruct);
  221. /* TIM2 interrupt Init */
  222. HAL_NVIC_SetPriority(TIM2_IRQn, 5, 0);
  223. HAL_NVIC_EnableIRQ(TIM2_IRQn);
  224. /* USER CODE BEGIN TIM2_MspInit 1 */
  225. /* USER CODE END TIM2_MspInit 1 */
  226. }
  227. else if(tim_baseHandle->Instance==TIM16)
  228. {
  229. /* USER CODE BEGIN TIM16_MspInit 0 */
  230. /* USER CODE END TIM16_MspInit 0 */
  231. /* TIM16 clock enable */
  232. __HAL_RCC_TIM16_CLK_ENABLE();
  233. /* USER CODE BEGIN TIM16_MspInit 1 */
  234. /* USER CODE END TIM16_MspInit 1 */
  235. }
  236. }
  237. void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle)
  238. {
  239. GPIO_InitTypeDef GPIO_InitStruct = {0};
  240. if(timHandle->Instance==TIM1)
  241. {
  242. /* USER CODE BEGIN TIM1_MspPostInit 0 */
  243. /* USER CODE END TIM1_MspPostInit 0 */
  244. __HAL_RCC_GPIOB_CLK_ENABLE();
  245. /**TIM1 GPIO Configuration
  246. PB9 ------> TIM1_CH3N
  247. PB13 ------> TIM1_CH1N
  248. */
  249. GPIO_InitStruct.Pin = IR_TX_Pin|RFID_OUT_Pin;
  250. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  251. GPIO_InitStruct.Pull = GPIO_NOPULL;
  252. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  253. GPIO_InitStruct.Alternate = GPIO_AF1_TIM1;
  254. HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  255. /* USER CODE BEGIN TIM1_MspPostInit 1 */
  256. /* USER CODE END TIM1_MspPostInit 1 */
  257. }
  258. else if(timHandle->Instance==TIM16)
  259. {
  260. /* USER CODE BEGIN TIM16_MspPostInit 0 */
  261. /* USER CODE END TIM16_MspPostInit 0 */
  262. __HAL_RCC_GPIOB_CLK_ENABLE();
  263. /**TIM16 GPIO Configuration
  264. PB8 ------> TIM16_CH1
  265. */
  266. GPIO_InitStruct.Pin = SPEAKER_Pin;
  267. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  268. GPIO_InitStruct.Pull = GPIO_NOPULL;
  269. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  270. GPIO_InitStruct.Alternate = GPIO_AF14_TIM16;
  271. HAL_GPIO_Init(SPEAKER_GPIO_Port, &GPIO_InitStruct);
  272. /* USER CODE BEGIN TIM16_MspPostInit 1 */
  273. /* USER CODE END TIM16_MspPostInit 1 */
  274. }
  275. }
  276. void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle)
  277. {
  278. if(tim_baseHandle->Instance==TIM1)
  279. {
  280. /* USER CODE BEGIN TIM1_MspDeInit 0 */
  281. /* USER CODE END TIM1_MspDeInit 0 */
  282. /* Peripheral clock disable */
  283. __HAL_RCC_TIM1_CLK_DISABLE();
  284. /* TIM1 interrupt Deinit */
  285. HAL_NVIC_DisableIRQ(TIM1_TRG_COM_TIM17_IRQn);
  286. /* USER CODE BEGIN TIM1_MspDeInit 1 */
  287. /* USER CODE END TIM1_MspDeInit 1 */
  288. }
  289. else if(tim_baseHandle->Instance==TIM2)
  290. {
  291. /* USER CODE BEGIN TIM2_MspDeInit 0 */
  292. /* USER CODE END TIM2_MspDeInit 0 */
  293. /* Peripheral clock disable */
  294. __HAL_RCC_TIM2_CLK_DISABLE();
  295. /**TIM2 GPIO Configuration
  296. PA0 ------> TIM2_CH1
  297. */
  298. HAL_GPIO_DeInit(IR_RX_GPIO_Port, IR_RX_Pin);
  299. /* TIM2 interrupt Deinit */
  300. HAL_NVIC_DisableIRQ(TIM2_IRQn);
  301. /* USER CODE BEGIN TIM2_MspDeInit 1 */
  302. /* USER CODE END TIM2_MspDeInit 1 */
  303. }
  304. else if(tim_baseHandle->Instance==TIM16)
  305. {
  306. /* USER CODE BEGIN TIM16_MspDeInit 0 */
  307. /* USER CODE END TIM16_MspDeInit 0 */
  308. /* Peripheral clock disable */
  309. __HAL_RCC_TIM16_CLK_DISABLE();
  310. /* USER CODE BEGIN TIM16_MspDeInit 1 */
  311. /* USER CODE END TIM16_MspDeInit 1 */
  312. }
  313. }
  314. /* USER CODE BEGIN 1 */
  315. /* USER CODE END 1 */
  316. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/