训练营PLSR题目
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
 
 
 

485 rader
13 KiB

  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) 2025 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 htim2;
  25. TIM_HandleTypeDef htim10;
  26. TIM_HandleTypeDef htim11;
  27. TIM_HandleTypeDef htim13;
  28. TIM_HandleTypeDef htim14;
  29. /* TIM2 init function */
  30. void MX_TIM2_Init(void)
  31. {
  32. /* USER CODE BEGIN TIM2_Init 0 */
  33. /* USER CODE END TIM2_Init 0 */
  34. TIM_ClockConfigTypeDef sClockSourceConfig = {0};
  35. TIM_MasterConfigTypeDef sMasterConfig = {0};
  36. /* USER CODE BEGIN TIM2_Init 1 */
  37. /* USER CODE END TIM2_Init 1 */
  38. htim2.Instance = TIM2;
  39. htim2.Init.Prescaler = 0;
  40. htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
  41. htim2.Init.Period = 4294967295;
  42. htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  43. htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  44. if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
  45. {
  46. Error_Handler();
  47. }
  48. sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_ETRMODE2;
  49. sClockSourceConfig.ClockPolarity = TIM_CLOCKPOLARITY_NONINVERTED;
  50. sClockSourceConfig.ClockPrescaler = TIM_CLOCKPRESCALER_DIV1;
  51. sClockSourceConfig.ClockFilter = 0;
  52. if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
  53. {
  54. Error_Handler();
  55. }
  56. sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  57. sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  58. if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
  59. {
  60. Error_Handler();
  61. }
  62. /* USER CODE BEGIN TIM2_Init 2 */
  63. __HAL_TIM_CLEAR_FLAG(&htim2, TIM_FLAG_UPDATE);
  64. HAL_TIM_Base_Start_IT(&htim2);
  65. /* USER CODE END TIM2_Init 2 */
  66. }
  67. /* TIM10 init function */
  68. void MX_TIM10_Init(void)
  69. {
  70. /* USER CODE BEGIN TIM10_Init 0 */
  71. /* USER CODE END TIM10_Init 0 */
  72. TIM_OC_InitTypeDef sConfigOC = {0};
  73. /* USER CODE BEGIN TIM10_Init 1 */
  74. /* USER CODE END TIM10_Init 1 */
  75. htim10.Instance = TIM10;
  76. htim10.Init.Prescaler = 72;
  77. htim10.Init.CounterMode = TIM_COUNTERMODE_UP;
  78. htim10.Init.Period = 65535;
  79. htim10.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  80. htim10.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
  81. if (HAL_TIM_Base_Init(&htim10) != HAL_OK)
  82. {
  83. Error_Handler();
  84. }
  85. if (HAL_TIM_PWM_Init(&htim10) != HAL_OK)
  86. {
  87. Error_Handler();
  88. }
  89. sConfigOC.OCMode = TIM_OCMODE_PWM1;
  90. sConfigOC.Pulse = 32767;
  91. sConfigOC.OCPolarity = TIM_OCPOLARITY_LOW;
  92. sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  93. if (HAL_TIM_PWM_ConfigChannel(&htim10, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
  94. {
  95. Error_Handler();
  96. }
  97. /* USER CODE BEGIN TIM10_Init 2 */
  98. __HAL_TIM_CLEAR_FLAG(&htim10, TIM_FLAG_UPDATE);
  99. __HAL_TIM_CLEAR_IT(&htim10, TIM_IT_UPDATE);
  100. TIM10->SR = 0; // 直接清除状态寄存器
  101. TIM_MasterConfigTypeDef sMasterConfig = {0};
  102. sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE; // TRGO信号源为更新事件
  103. sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; // 仅主模式
  104. HAL_TIMEx_MasterConfigSynchronization(&htim10, &sMasterConfig);
  105. /* USER CODE END TIM10_Init 2 */
  106. HAL_TIM_MspPostInit(&htim10);
  107. }
  108. /* TIM11 init function */
  109. void MX_TIM11_Init(void)
  110. {
  111. /* USER CODE BEGIN TIM11_Init 0 */
  112. /* USER CODE END TIM11_Init 0 */
  113. TIM_OC_InitTypeDef sConfigOC = {0};
  114. /* USER CODE BEGIN TIM11_Init 1 */
  115. /* USER CODE END TIM11_Init 1 */
  116. htim11.Instance = TIM11;
  117. htim11.Init.Prescaler = 0;
  118. htim11.Init.CounterMode = TIM_COUNTERMODE_UP;
  119. htim11.Init.Period = 65535;
  120. htim11.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  121. htim11.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  122. if (HAL_TIM_Base_Init(&htim11) != HAL_OK)
  123. {
  124. Error_Handler();
  125. }
  126. if (HAL_TIM_PWM_Init(&htim11) != HAL_OK)
  127. {
  128. Error_Handler();
  129. }
  130. sConfigOC.OCMode = TIM_OCMODE_PWM1;
  131. sConfigOC.Pulse = 0;
  132. sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
  133. sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  134. if (HAL_TIM_PWM_ConfigChannel(&htim11, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
  135. {
  136. Error_Handler();
  137. }
  138. /* USER CODE BEGIN TIM11_Init 2 */
  139. /* USER CODE END TIM11_Init 2 */
  140. HAL_TIM_MspPostInit(&htim11);
  141. }
  142. /* TIM13 init function */
  143. void MX_TIM13_Init(void)
  144. {
  145. /* USER CODE BEGIN TIM13_Init 0 */
  146. /* USER CODE END TIM13_Init 0 */
  147. TIM_OC_InitTypeDef sConfigOC = {0};
  148. /* USER CODE BEGIN TIM13_Init 1 */
  149. /* USER CODE END TIM13_Init 1 */
  150. htim13.Instance = TIM13;
  151. htim13.Init.Prescaler = 0;
  152. htim13.Init.CounterMode = TIM_COUNTERMODE_UP;
  153. htim13.Init.Period = 65535;
  154. htim13.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  155. htim13.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  156. if (HAL_TIM_Base_Init(&htim13) != HAL_OK)
  157. {
  158. Error_Handler();
  159. }
  160. if (HAL_TIM_PWM_Init(&htim13) != HAL_OK)
  161. {
  162. Error_Handler();
  163. }
  164. sConfigOC.OCMode = TIM_OCMODE_PWM1;
  165. sConfigOC.Pulse = 0;
  166. sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
  167. sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  168. if (HAL_TIM_PWM_ConfigChannel(&htim13, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
  169. {
  170. Error_Handler();
  171. }
  172. /* USER CODE BEGIN TIM13_Init 2 */
  173. /* USER CODE END TIM13_Init 2 */
  174. HAL_TIM_MspPostInit(&htim13);
  175. }
  176. /* TIM14 init function */
  177. void MX_TIM14_Init(void)
  178. {
  179. /* USER CODE BEGIN TIM14_Init 0 */
  180. /* USER CODE END TIM14_Init 0 */
  181. TIM_OC_InitTypeDef sConfigOC = {0};
  182. /* USER CODE BEGIN TIM14_Init 1 */
  183. /* USER CODE END TIM14_Init 1 */
  184. htim14.Instance = TIM14;
  185. htim14.Init.Prescaler = 0;
  186. htim14.Init.CounterMode = TIM_COUNTERMODE_UP;
  187. htim14.Init.Period = 65535;
  188. htim14.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  189. htim14.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  190. if (HAL_TIM_Base_Init(&htim14) != HAL_OK)
  191. {
  192. Error_Handler();
  193. }
  194. if (HAL_TIM_PWM_Init(&htim14) != HAL_OK)
  195. {
  196. Error_Handler();
  197. }
  198. sConfigOC.OCMode = TIM_OCMODE_PWM1;
  199. sConfigOC.Pulse = 0;
  200. sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
  201. sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  202. if (HAL_TIM_PWM_ConfigChannel(&htim14, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
  203. {
  204. Error_Handler();
  205. }
  206. /* USER CODE BEGIN TIM14_Init 2 */
  207. /* USER CODE END TIM14_Init 2 */
  208. HAL_TIM_MspPostInit(&htim14);
  209. }
  210. void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
  211. {
  212. GPIO_InitTypeDef GPIO_InitStruct = {0};
  213. if(tim_baseHandle->Instance==TIM2)
  214. {
  215. /* USER CODE BEGIN TIM2_MspInit 0 */
  216. /* USER CODE END TIM2_MspInit 0 */
  217. /* TIM2 clock enable */
  218. __HAL_RCC_TIM2_CLK_ENABLE();
  219. __HAL_RCC_GPIOA_CLK_ENABLE();
  220. /**TIM2 GPIO Configuration
  221. PA15 ------> TIM2_ETR
  222. */
  223. GPIO_InitStruct.Pin = GPIO_PIN_15;
  224. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  225. GPIO_InitStruct.Pull = GPIO_NOPULL;
  226. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  227. GPIO_InitStruct.Alternate = GPIO_AF1_TIM2;
  228. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  229. /* TIM2 interrupt Init */
  230. HAL_NVIC_SetPriority(TIM2_IRQn, 0, 0);
  231. HAL_NVIC_EnableIRQ(TIM2_IRQn);
  232. /* USER CODE BEGIN TIM2_MspInit 1 */
  233. /* USER CODE END TIM2_MspInit 1 */
  234. }
  235. else if(tim_baseHandle->Instance==TIM10)
  236. {
  237. /* USER CODE BEGIN TIM10_MspInit 0 */
  238. /* USER CODE END TIM10_MspInit 0 */
  239. /* TIM10 clock enable */
  240. __HAL_RCC_TIM10_CLK_ENABLE();
  241. /* USER CODE BEGIN TIM10_MspInit 1 */
  242. /* USER CODE END TIM10_MspInit 1 */
  243. }
  244. else if(tim_baseHandle->Instance==TIM11)
  245. {
  246. /* USER CODE BEGIN TIM11_MspInit 0 */
  247. /* USER CODE END TIM11_MspInit 0 */
  248. /* TIM11 clock enable */
  249. __HAL_RCC_TIM11_CLK_ENABLE();
  250. /* USER CODE BEGIN TIM11_MspInit 1 */
  251. /* USER CODE END TIM11_MspInit 1 */
  252. }
  253. else if(tim_baseHandle->Instance==TIM13)
  254. {
  255. /* USER CODE BEGIN TIM13_MspInit 0 */
  256. /* USER CODE END TIM13_MspInit 0 */
  257. /* TIM13 clock enable */
  258. __HAL_RCC_TIM13_CLK_ENABLE();
  259. /* USER CODE BEGIN TIM13_MspInit 1 */
  260. /* USER CODE END TIM13_MspInit 1 */
  261. }
  262. else if(tim_baseHandle->Instance==TIM14)
  263. {
  264. /* USER CODE BEGIN TIM14_MspInit 0 */
  265. /* USER CODE END TIM14_MspInit 0 */
  266. /* TIM14 clock enable */
  267. __HAL_RCC_TIM14_CLK_ENABLE();
  268. /* USER CODE BEGIN TIM14_MspInit 1 */
  269. /* USER CODE END TIM14_MspInit 1 */
  270. }
  271. }
  272. void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle)
  273. {
  274. GPIO_InitTypeDef GPIO_InitStruct = {0};
  275. if(timHandle->Instance==TIM10)
  276. {
  277. /* USER CODE BEGIN TIM10_MspPostInit 0 */
  278. /* USER CODE END TIM10_MspPostInit 0 */
  279. __HAL_RCC_GPIOF_CLK_ENABLE();
  280. /**TIM10 GPIO Configuration
  281. PF6 ------> TIM10_CH1
  282. */
  283. GPIO_InitStruct.Pin = GPIO_PIN_6;
  284. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  285. GPIO_InitStruct.Pull = GPIO_NOPULL;
  286. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  287. GPIO_InitStruct.Alternate = GPIO_AF3_TIM10;
  288. HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
  289. /* USER CODE BEGIN TIM10_MspPostInit 1 */
  290. /* USER CODE END TIM10_MspPostInit 1 */
  291. }
  292. else if(timHandle->Instance==TIM11)
  293. {
  294. /* USER CODE BEGIN TIM11_MspPostInit 0 */
  295. /* USER CODE END TIM11_MspPostInit 0 */
  296. __HAL_RCC_GPIOF_CLK_ENABLE();
  297. /**TIM11 GPIO Configuration
  298. PF7 ------> TIM11_CH1
  299. */
  300. GPIO_InitStruct.Pin = GPIO_PIN_7;
  301. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  302. GPIO_InitStruct.Pull = GPIO_NOPULL;
  303. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  304. GPIO_InitStruct.Alternate = GPIO_AF3_TIM11;
  305. HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
  306. /* USER CODE BEGIN TIM11_MspPostInit 1 */
  307. /* USER CODE END TIM11_MspPostInit 1 */
  308. }
  309. else if(timHandle->Instance==TIM13)
  310. {
  311. /* USER CODE BEGIN TIM13_MspPostInit 0 */
  312. /* USER CODE END TIM13_MspPostInit 0 */
  313. __HAL_RCC_GPIOF_CLK_ENABLE();
  314. /**TIM13 GPIO Configuration
  315. PF8 ------> TIM13_CH1
  316. */
  317. GPIO_InitStruct.Pin = GPIO_PIN_8;
  318. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  319. GPIO_InitStruct.Pull = GPIO_NOPULL;
  320. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  321. GPIO_InitStruct.Alternate = GPIO_AF9_TIM13;
  322. HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
  323. /* USER CODE BEGIN TIM13_MspPostInit 1 */
  324. /* USER CODE END TIM13_MspPostInit 1 */
  325. }
  326. else if(timHandle->Instance==TIM14)
  327. {
  328. /* USER CODE BEGIN TIM14_MspPostInit 0 */
  329. /* USER CODE END TIM14_MspPostInit 0 */
  330. __HAL_RCC_GPIOF_CLK_ENABLE();
  331. /**TIM14 GPIO Configuration
  332. PF9 ------> TIM14_CH1
  333. */
  334. GPIO_InitStruct.Pin = GPIO_PIN_9;
  335. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  336. GPIO_InitStruct.Pull = GPIO_NOPULL;
  337. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  338. GPIO_InitStruct.Alternate = GPIO_AF9_TIM14;
  339. HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
  340. /* USER CODE BEGIN TIM14_MspPostInit 1 */
  341. /* USER CODE END TIM14_MspPostInit 1 */
  342. }
  343. }
  344. void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle)
  345. {
  346. if(tim_baseHandle->Instance==TIM2)
  347. {
  348. /* USER CODE BEGIN TIM2_MspDeInit 0 */
  349. /* USER CODE END TIM2_MspDeInit 0 */
  350. /* Peripheral clock disable */
  351. __HAL_RCC_TIM2_CLK_DISABLE();
  352. /**TIM2 GPIO Configuration
  353. PA15 ------> TIM2_ETR
  354. */
  355. HAL_GPIO_DeInit(GPIOA, GPIO_PIN_15);
  356. /* TIM2 interrupt Deinit */
  357. HAL_NVIC_DisableIRQ(TIM2_IRQn);
  358. /* USER CODE BEGIN TIM2_MspDeInit 1 */
  359. /* USER CODE END TIM2_MspDeInit 1 */
  360. }
  361. else if(tim_baseHandle->Instance==TIM10)
  362. {
  363. /* USER CODE BEGIN TIM10_MspDeInit 0 */
  364. /* USER CODE END TIM10_MspDeInit 0 */
  365. /* Peripheral clock disable */
  366. __HAL_RCC_TIM10_CLK_DISABLE();
  367. /* USER CODE BEGIN TIM10_MspDeInit 1 */
  368. /* USER CODE END TIM10_MspDeInit 1 */
  369. }
  370. else if(tim_baseHandle->Instance==TIM11)
  371. {
  372. /* USER CODE BEGIN TIM11_MspDeInit 0 */
  373. /* USER CODE END TIM11_MspDeInit 0 */
  374. /* Peripheral clock disable */
  375. __HAL_RCC_TIM11_CLK_DISABLE();
  376. /* USER CODE BEGIN TIM11_MspDeInit 1 */
  377. /* USER CODE END TIM11_MspDeInit 1 */
  378. }
  379. else if(tim_baseHandle->Instance==TIM13)
  380. {
  381. /* USER CODE BEGIN TIM13_MspDeInit 0 */
  382. /* USER CODE END TIM13_MspDeInit 0 */
  383. /* Peripheral clock disable */
  384. __HAL_RCC_TIM13_CLK_DISABLE();
  385. /* USER CODE BEGIN TIM13_MspDeInit 1 */
  386. /* USER CODE END TIM13_MspDeInit 1 */
  387. }
  388. else if(tim_baseHandle->Instance==TIM14)
  389. {
  390. /* USER CODE BEGIN TIM14_MspDeInit 0 */
  391. /* USER CODE END TIM14_MspDeInit 0 */
  392. /* Peripheral clock disable */
  393. __HAL_RCC_TIM14_CLK_DISABLE();
  394. /* USER CODE BEGIN TIM14_MspDeInit 1 */
  395. /* USER CODE END TIM14_MspDeInit 1 */
  396. }
  397. }
  398. /* USER CODE BEGIN 1 */
  399. /* USER CODE END 1 */