1 /* USER CODE BEGIN Header */
2 /**
3   ******************************************************************************
4   * @file         stm32h5xx_hal_msp.c
5   * @brief        This file provides code for the MSP Initialization
6   *               and de-Initialization codes.
7   ******************************************************************************
8   * @attention
9   *
10   * Copyright (c) 2024 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 
21 /* Includes ------------------------------------------------------------------*/
22 #include "main.h"
23 
24 /* USER CODE BEGIN Includes */
25 #include <drv_common.h>
26 /* USER CODE END Includes */
27 
28 /* Private typedef -----------------------------------------------------------*/
29 /* USER CODE BEGIN TD */
30 
31 /* USER CODE END TD */
32 
33 /* Private define ------------------------------------------------------------*/
34 /* USER CODE BEGIN Define */
35 
36 /* USER CODE END Define */
37 
38 /* Private macro -------------------------------------------------------------*/
39 /* USER CODE BEGIN Macro */
40 
41 /* USER CODE END Macro */
42 
43 /* Private variables ---------------------------------------------------------*/
44 /* USER CODE BEGIN PV */
45 
46 /* USER CODE END PV */
47 
48 /* Private function prototypes -----------------------------------------------*/
49 /* USER CODE BEGIN PFP */
50 
51 /* USER CODE END PFP */
52 
53 /* External functions --------------------------------------------------------*/
54 /* USER CODE BEGIN ExternalFunctions */
55 
56 /* USER CODE END ExternalFunctions */
57 
58 /* USER CODE BEGIN 0 */
59 
60 /* USER CODE END 0 */
61 
62 void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
63                                                             /**
64   * Initializes the Global MSP.
65   */
HAL_MspInit(void)66 void HAL_MspInit(void)
67 {
68   /* USER CODE BEGIN MspInit 0 */
69 
70   /* USER CODE END MspInit 0 */
71 
72   /* System interrupt init*/
73 
74   /* USER CODE BEGIN MspInit 1 */
75 
76   /* USER CODE END MspInit 1 */
77 }
78 
79 static uint32_t HAL_RCC_ADC_CLK_ENABLED=0;
80 
81 /**
82 * @brief ADC MSP Initialization
83 * This function configures the hardware resources used in this example
84 * @param hadc: ADC handle pointer
85 * @retval None
86 */
HAL_ADC_MspInit(ADC_HandleTypeDef * hadc)87 void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
88 {
89   GPIO_InitTypeDef GPIO_InitStruct = {0};
90   RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
91   if(hadc->Instance==ADC1)
92   {
93   /* USER CODE BEGIN ADC1_MspInit 0 */
94 
95   /* USER CODE END ADC1_MspInit 0 */
96 
97   /** Initializes the peripherals clock
98   */
99     PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_ADCDAC;
100     PeriphClkInitStruct.AdcDacClockSelection = RCC_ADCDACCLKSOURCE_HCLK;
101     if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
102     {
103       Error_Handler();
104     }
105 
106     /* Peripheral clock enable */
107     HAL_RCC_ADC_CLK_ENABLED++;
108     if(HAL_RCC_ADC_CLK_ENABLED==1){
109       __HAL_RCC_ADC_CLK_ENABLE();
110     }
111 
112     __HAL_RCC_GPIOA_CLK_ENABLE();
113     __HAL_RCC_GPIOF_CLK_ENABLE();
114     /**ADC1 GPIO Configuration
115     PA4     ------> ADC1_INP18
116     PF11     ------> ADC1_INP2
117     */
118     GPIO_InitStruct.Pin = VBUS_SENSE_Pin;
119     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
120     GPIO_InitStruct.Pull = GPIO_NOPULL;
121     HAL_GPIO_Init(VBUS_SENSE_GPIO_Port, &GPIO_InitStruct);
122 
123     GPIO_InitStruct.Pin = GPIO_PIN_11;
124     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
125     GPIO_InitStruct.Pull = GPIO_NOPULL;
126     HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
127 
128   /* USER CODE BEGIN ADC1_MspInit 1 */
129 
130   /* USER CODE END ADC1_MspInit 1 */
131   }
132   else if(hadc->Instance==ADC2)
133   {
134   /* USER CODE BEGIN ADC2_MspInit 0 */
135 
136   /* USER CODE END ADC2_MspInit 0 */
137 
138   /** Initializes the peripherals clock
139   */
140     PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_ADCDAC;
141     PeriphClkInitStruct.AdcDacClockSelection = RCC_ADCDACCLKSOURCE_HCLK;
142     if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
143     {
144       Error_Handler();
145     }
146 
147     /* Peripheral clock enable */
148     HAL_RCC_ADC_CLK_ENABLED++;
149     if(HAL_RCC_ADC_CLK_ENABLED==1){
150       __HAL_RCC_ADC_CLK_ENABLE();
151     }
152 
153     __HAL_RCC_GPIOC_CLK_ENABLE();
154     __HAL_RCC_GPIOA_CLK_ENABLE();
155     __HAL_RCC_GPIOB_CLK_ENABLE();
156     /**ADC2 GPIO Configuration
157     PC0     ------> ADC2_INP10
158     PC2     ------> ADC2_INP12
159     PC3     ------> ADC2_INP13
160     PA6     ------> ADC2_INP3
161     PB1     ------> ADC2_INP5
162     */
163     GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_2|GPIO_PIN_3;
164     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
165     GPIO_InitStruct.Pull = GPIO_NOPULL;
166     HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
167 
168     GPIO_InitStruct.Pin = GPIO_PIN_6;
169     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
170     GPIO_InitStruct.Pull = GPIO_NOPULL;
171     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
172 
173     GPIO_InitStruct.Pin = GPIO_PIN_1;
174     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
175     GPIO_InitStruct.Pull = GPIO_NOPULL;
176     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
177 
178   /* USER CODE BEGIN ADC2_MspInit 1 */
179 
180   /* USER CODE END ADC2_MspInit 1 */
181   }
182 
183 }
184 
185 /**
186 * @brief ADC MSP De-Initialization
187 * This function freeze the hardware resources used in this example
188 * @param hadc: ADC handle pointer
189 * @retval None
190 */
HAL_ADC_MspDeInit(ADC_HandleTypeDef * hadc)191 void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc)
192 {
193   if(hadc->Instance==ADC1)
194   {
195   /* USER CODE BEGIN ADC1_MspDeInit 0 */
196 
197   /* USER CODE END ADC1_MspDeInit 0 */
198     /* Peripheral clock disable */
199     HAL_RCC_ADC_CLK_ENABLED--;
200     if(HAL_RCC_ADC_CLK_ENABLED==0){
201       __HAL_RCC_ADC_CLK_DISABLE();
202     }
203 
204     /**ADC1 GPIO Configuration
205     PA4     ------> ADC1_INP18
206     PF11     ------> ADC1_INP2
207     */
208     HAL_GPIO_DeInit(VBUS_SENSE_GPIO_Port, VBUS_SENSE_Pin);
209 
210     HAL_GPIO_DeInit(GPIOF, GPIO_PIN_11);
211 
212   /* USER CODE BEGIN ADC1_MspDeInit 1 */
213 
214   /* USER CODE END ADC1_MspDeInit 1 */
215   }
216   else if(hadc->Instance==ADC2)
217   {
218   /* USER CODE BEGIN ADC2_MspDeInit 0 */
219 
220   /* USER CODE END ADC2_MspDeInit 0 */
221     /* Peripheral clock disable */
222     HAL_RCC_ADC_CLK_ENABLED--;
223     if(HAL_RCC_ADC_CLK_ENABLED==0){
224       __HAL_RCC_ADC_CLK_DISABLE();
225     }
226 
227     /**ADC2 GPIO Configuration
228     PC0     ------> ADC2_INP10
229     PC2     ------> ADC2_INP12
230     PC3     ------> ADC2_INP13
231     PA6     ------> ADC2_INP3
232     PB1     ------> ADC2_INP5
233     */
234     HAL_GPIO_DeInit(GPIOC, GPIO_PIN_0|GPIO_PIN_2|GPIO_PIN_3);
235 
236     HAL_GPIO_DeInit(GPIOA, GPIO_PIN_6);
237 
238     HAL_GPIO_DeInit(GPIOB, GPIO_PIN_1);
239 
240   /* USER CODE BEGIN ADC2_MspDeInit 1 */
241 
242   /* USER CODE END ADC2_MspDeInit 1 */
243   }
244 
245 }
246 
247 /**
248 * @brief ETH MSP Initialization
249 * This function configures the hardware resources used in this example
250 * @param heth: ETH handle pointer
251 * @retval None
252 */
HAL_ETH_MspInit(ETH_HandleTypeDef * heth)253 void HAL_ETH_MspInit(ETH_HandleTypeDef* heth)
254 {
255   GPIO_InitTypeDef GPIO_InitStruct = {0};
256   if(heth->Instance==ETH)
257   {
258   /* USER CODE BEGIN ETH_MspInit 0 */
259 
260   /* USER CODE END ETH_MspInit 0 */
261     /* Peripheral clock enable */
262     __HAL_RCC_ETH_CLK_ENABLE();
263     __HAL_RCC_ETHTX_CLK_ENABLE();
264     __HAL_RCC_ETHRX_CLK_ENABLE();
265 
266     __HAL_RCC_GPIOC_CLK_ENABLE();
267     __HAL_RCC_GPIOA_CLK_ENABLE();
268     __HAL_RCC_GPIOB_CLK_ENABLE();
269     __HAL_RCC_GPIOG_CLK_ENABLE();
270     /**ETH GPIO Configuration
271     PC1     ------> ETH_MDC
272     PA1     ------> ETH_REF_CLK
273     PA2     ------> ETH_MDIO
274     PA7     ------> ETH_CRS_DV
275     PC4     ------> ETH_RXD0
276     PC5     ------> ETH_RXD1
277     PB15     ------> ETH_TXD1
278     PG11     ------> ETH_TX_EN
279     PG13     ------> ETH_TXD0
280     */
281     GPIO_InitStruct.Pin = RMII_MDC_Pin|RMII_RXD0_Pin|RMII_RXD1_Pin;
282     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
283     GPIO_InitStruct.Pull = GPIO_NOPULL;
284     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
285     GPIO_InitStruct.Alternate = GPIO_AF11_ETH;
286     HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
287 
288     GPIO_InitStruct.Pin = RMII_REF_CLK_Pin|RMII_MDIO_Pin|RMII_CRS_DV_Pin;
289     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
290     GPIO_InitStruct.Pull = GPIO_NOPULL;
291     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
292     GPIO_InitStruct.Alternate = GPIO_AF11_ETH;
293     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
294 
295     GPIO_InitStruct.Pin = RMII_TXD1_Pin;
296     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
297     GPIO_InitStruct.Pull = GPIO_NOPULL;
298     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
299     GPIO_InitStruct.Alternate = GPIO_AF11_ETH;
300     HAL_GPIO_Init(RMII_TXD1_GPIO_Port, &GPIO_InitStruct);
301 
302     GPIO_InitStruct.Pin = RMII_TXT_EN_Pin|RMI_TXD0_Pin;
303     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
304     GPIO_InitStruct.Pull = GPIO_NOPULL;
305     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
306     GPIO_InitStruct.Alternate = GPIO_AF11_ETH;
307     HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
308 
309   /* USER CODE BEGIN ETH_MspInit 1 */
310 
311   /* USER CODE END ETH_MspInit 1 */
312   }
313 
314 }
315 
316 /**
317 * @brief ETH MSP De-Initialization
318 * This function freeze the hardware resources used in this example
319 * @param heth: ETH handle pointer
320 * @retval None
321 */
HAL_ETH_MspDeInit(ETH_HandleTypeDef * heth)322 void HAL_ETH_MspDeInit(ETH_HandleTypeDef* heth)
323 {
324   if(heth->Instance==ETH)
325   {
326   /* USER CODE BEGIN ETH_MspDeInit 0 */
327 
328   /* USER CODE END ETH_MspDeInit 0 */
329     /* Peripheral clock disable */
330     __HAL_RCC_ETH_CLK_DISABLE();
331     __HAL_RCC_ETHTX_CLK_DISABLE();
332     __HAL_RCC_ETHRX_CLK_DISABLE();
333 
334     /**ETH GPIO Configuration
335     PC1     ------> ETH_MDC
336     PA1     ------> ETH_REF_CLK
337     PA2     ------> ETH_MDIO
338     PA7     ------> ETH_CRS_DV
339     PC4     ------> ETH_RXD0
340     PC5     ------> ETH_RXD1
341     PB15     ------> ETH_TXD1
342     PG11     ------> ETH_TX_EN
343     PG13     ------> ETH_TXD0
344     */
345     HAL_GPIO_DeInit(GPIOC, RMII_MDC_Pin|RMII_RXD0_Pin|RMII_RXD1_Pin);
346 
347     HAL_GPIO_DeInit(GPIOA, RMII_REF_CLK_Pin|RMII_MDIO_Pin|RMII_CRS_DV_Pin);
348 
349     HAL_GPIO_DeInit(RMII_TXD1_GPIO_Port, RMII_TXD1_Pin);
350 
351     HAL_GPIO_DeInit(GPIOG, RMII_TXT_EN_Pin|RMI_TXD0_Pin);
352 
353   /* USER CODE BEGIN ETH_MspDeInit 1 */
354 
355   /* USER CODE END ETH_MspDeInit 1 */
356   }
357 
358 }
359 
360 /**
361 * @brief UART MSP Initialization
362 * This function configures the hardware resources used in this example
363 * @param huart: UART handle pointer
364 * @retval None
365 */
HAL_UART_MspInit(UART_HandleTypeDef * huart)366 void HAL_UART_MspInit(UART_HandleTypeDef* huart)
367 {
368   GPIO_InitTypeDef GPIO_InitStruct = {0};
369   RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
370   if(huart->Instance==LPUART1)
371   {
372   /* USER CODE BEGIN LPUART1_MspInit 0 */
373 
374   /* USER CODE END LPUART1_MspInit 0 */
375 
376   /** Initializes the peripherals clock
377   */
378     PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_LPUART1;
379     PeriphClkInitStruct.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_PCLK3;
380     if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
381     {
382       Error_Handler();
383     }
384 
385     /* Peripheral clock enable */
386     __HAL_RCC_LPUART1_CLK_ENABLE();
387 
388     __HAL_RCC_GPIOB_CLK_ENABLE();
389     /**LPUART1 GPIO Configuration
390     PB6     ------> LPUART1_TX
391     PB7     ------> LPUART1_RX
392     */
393     GPIO_InitStruct.Pin = ARD_D1_TX_Pin|ARD_D0_RX_Pin;
394     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
395     GPIO_InitStruct.Pull = GPIO_NOPULL;
396     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
397     GPIO_InitStruct.Alternate = GPIO_AF8_LPUART1;
398     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
399 
400   /* USER CODE BEGIN LPUART1_MspInit 1 */
401 
402   /* USER CODE END LPUART1_MspInit 1 */
403   }
404   else if(huart->Instance==USART3)
405   {
406   /* USER CODE BEGIN USART3_MspInit 0 */
407 
408   /* USER CODE END USART3_MspInit 0 */
409 
410   /** Initializes the peripherals clock
411   */
412     PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART3;
413     PeriphClkInitStruct.Usart3ClockSelection = RCC_USART3CLKSOURCE_PCLK1;
414     if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
415     {
416       Error_Handler();
417     }
418 
419     /* Peripheral clock enable */
420     __HAL_RCC_USART3_CLK_ENABLE();
421 
422     __HAL_RCC_GPIOD_CLK_ENABLE();
423     /**USART3 GPIO Configuration
424     PD8     ------> USART3_TX
425     PD9     ------> USART3_RX
426     */
427     GPIO_InitStruct.Pin = T_VCP_TX_Pin|T_VCP_RX_Pin;
428     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
429     GPIO_InitStruct.Pull = GPIO_NOPULL;
430     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
431     GPIO_InitStruct.Alternate = GPIO_AF7_USART3;
432     HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
433 
434   /* USER CODE BEGIN USART3_MspInit 1 */
435 
436   /* USER CODE END USART3_MspInit 1 */
437   }
438 
439 }
440 
441 /**
442 * @brief UART MSP De-Initialization
443 * This function freeze the hardware resources used in this example
444 * @param huart: UART handle pointer
445 * @retval None
446 */
HAL_UART_MspDeInit(UART_HandleTypeDef * huart)447 void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
448 {
449   if(huart->Instance==LPUART1)
450   {
451   /* USER CODE BEGIN LPUART1_MspDeInit 0 */
452 
453   /* USER CODE END LPUART1_MspDeInit 0 */
454     /* Peripheral clock disable */
455     __HAL_RCC_LPUART1_CLK_DISABLE();
456 
457     /**LPUART1 GPIO Configuration
458     PB6     ------> LPUART1_TX
459     PB7     ------> LPUART1_RX
460     */
461     HAL_GPIO_DeInit(GPIOB, ARD_D1_TX_Pin|ARD_D0_RX_Pin);
462 
463   /* USER CODE BEGIN LPUART1_MspDeInit 1 */
464 
465   /* USER CODE END LPUART1_MspDeInit 1 */
466   }
467   else if(huart->Instance==USART3)
468   {
469   /* USER CODE BEGIN USART3_MspDeInit 0 */
470 
471   /* USER CODE END USART3_MspDeInit 0 */
472     /* Peripheral clock disable */
473     __HAL_RCC_USART3_CLK_DISABLE();
474 
475     /**USART3 GPIO Configuration
476     PD8     ------> USART3_TX
477     PD9     ------> USART3_RX
478     */
479     HAL_GPIO_DeInit(GPIOD, T_VCP_TX_Pin|T_VCP_RX_Pin);
480 
481   /* USER CODE BEGIN USART3_MspDeInit 1 */
482 
483   /* USER CODE END USART3_MspDeInit 1 */
484   }
485 
486 }
487 
488 /**
489 * @brief TIM_PWM MSP Initialization
490 * This function configures the hardware resources used in this example
491 * @param htim_pwm: TIM_PWM handle pointer
492 * @retval None
493 */
HAL_TIM_PWM_MspInit(TIM_HandleTypeDef * htim_pwm)494 void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef* htim_pwm)
495 {
496   if(htim_pwm->Instance==TIM1)
497   {
498   /* USER CODE BEGIN TIM1_MspInit 0 */
499 
500   /* USER CODE END TIM1_MspInit 0 */
501     /* Peripheral clock enable */
502     __HAL_RCC_TIM1_CLK_ENABLE();
503   /* USER CODE BEGIN TIM1_MspInit 1 */
504 
505   /* USER CODE END TIM1_MspInit 1 */
506   }
507   else if(htim_pwm->Instance==TIM3)
508   {
509   /* USER CODE BEGIN TIM3_MspInit 0 */
510 
511   /* USER CODE END TIM3_MspInit 0 */
512     /* Peripheral clock enable */
513     __HAL_RCC_TIM3_CLK_ENABLE();
514   /* USER CODE BEGIN TIM3_MspInit 1 */
515 
516   /* USER CODE END TIM3_MspInit 1 */
517   }
518   else if(htim_pwm->Instance==TIM4)
519   {
520   /* USER CODE BEGIN TIM4_MspInit 0 */
521 
522   /* USER CODE END TIM4_MspInit 0 */
523     /* Peripheral clock enable */
524     __HAL_RCC_TIM4_CLK_ENABLE();
525   /* USER CODE BEGIN TIM4_MspInit 1 */
526 
527   /* USER CODE END TIM4_MspInit 1 */
528   }
529 
530 }
531 
HAL_TIM_MspPostInit(TIM_HandleTypeDef * htim)532 void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim)
533 {
534   GPIO_InitTypeDef GPIO_InitStruct = {0};
535   if(htim->Instance==TIM1)
536   {
537   /* USER CODE BEGIN TIM1_MspPostInit 0 */
538 
539   /* USER CODE END TIM1_MspPostInit 0 */
540     __HAL_RCC_GPIOE_CLK_ENABLE();
541     /**TIM1 GPIO Configuration
542     PE9     ------> TIM1_CH1
543     PE11     ------> TIM1_CH2
544     PE13     ------> TIM1_CH3
545     */
546     GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_11|GPIO_PIN_13;
547     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
548     GPIO_InitStruct.Pull = GPIO_NOPULL;
549     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
550     GPIO_InitStruct.Alternate = GPIO_AF1_TIM1;
551     HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
552 
553   /* USER CODE BEGIN TIM1_MspPostInit 1 */
554 
555   /* USER CODE END TIM1_MspPostInit 1 */
556   }
557   else if(htim->Instance==TIM3)
558   {
559   /* USER CODE BEGIN TIM3_MspPostInit 0 */
560 
561   /* USER CODE END TIM3_MspPostInit 0 */
562 
563     __HAL_RCC_GPIOB_CLK_ENABLE();
564     /**TIM3 GPIO Configuration
565     PB5     ------> TIM3_CH2
566     */
567     GPIO_InitStruct.Pin = GPIO_PIN_5;
568     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
569     GPIO_InitStruct.Pull = GPIO_NOPULL;
570     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
571     GPIO_InitStruct.Alternate = GPIO_AF2_TIM3;
572     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
573 
574   /* USER CODE BEGIN TIM3_MspPostInit 1 */
575 
576   /* USER CODE END TIM3_MspPostInit 1 */
577   }
578   else if(htim->Instance==TIM4)
579   {
580   /* USER CODE BEGIN TIM4_MspPostInit 0 */
581 
582   /* USER CODE END TIM4_MspPostInit 0 */
583 
584     __HAL_RCC_GPIOD_CLK_ENABLE();
585     /**TIM4 GPIO Configuration
586     PD14     ------> TIM4_CH3
587     PD15     ------> TIM4_CH4
588     */
589     GPIO_InitStruct.Pin = GPIO_PIN_14|GPIO_PIN_15;
590     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
591     GPIO_InitStruct.Pull = GPIO_NOPULL;
592     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
593     GPIO_InitStruct.Alternate = GPIO_AF2_TIM4;
594     HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
595 
596   /* USER CODE BEGIN TIM4_MspPostInit 1 */
597 
598   /* USER CODE END TIM4_MspPostInit 1 */
599   }
600 
601 }
602 /**
603 * @brief TIM_PWM MSP De-Initialization
604 * This function freeze the hardware resources used in this example
605 * @param htim_pwm: TIM_PWM handle pointer
606 * @retval None
607 */
HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef * htim_pwm)608 void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef* htim_pwm)
609 {
610   if(htim_pwm->Instance==TIM1)
611   {
612   /* USER CODE BEGIN TIM1_MspDeInit 0 */
613 
614   /* USER CODE END TIM1_MspDeInit 0 */
615     /* Peripheral clock disable */
616     __HAL_RCC_TIM1_CLK_DISABLE();
617   /* USER CODE BEGIN TIM1_MspDeInit 1 */
618 
619   /* USER CODE END TIM1_MspDeInit 1 */
620   }
621   else if(htim_pwm->Instance==TIM3)
622   {
623   /* USER CODE BEGIN TIM3_MspDeInit 0 */
624 
625   /* USER CODE END TIM3_MspDeInit 0 */
626     /* Peripheral clock disable */
627     __HAL_RCC_TIM3_CLK_DISABLE();
628   /* USER CODE BEGIN TIM3_MspDeInit 1 */
629 
630   /* USER CODE END TIM3_MspDeInit 1 */
631   }
632   else if(htim_pwm->Instance==TIM4)
633   {
634   /* USER CODE BEGIN TIM4_MspDeInit 0 */
635 
636   /* USER CODE END TIM4_MspDeInit 0 */
637     /* Peripheral clock disable */
638     __HAL_RCC_TIM4_CLK_DISABLE();
639   /* USER CODE BEGIN TIM4_MspDeInit 1 */
640 
641   /* USER CODE END TIM4_MspDeInit 1 */
642   }
643 
644 }
645 
646 /**
647 * @brief PCD MSP Initialization
648 * This function configures the hardware resources used in this example
649 * @param hpcd: PCD handle pointer
650 * @retval None
651 */
HAL_PCD_MspInit(PCD_HandleTypeDef * hpcd)652 void HAL_PCD_MspInit(PCD_HandleTypeDef* hpcd)
653 {
654   GPIO_InitTypeDef GPIO_InitStruct = {0};
655   RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
656   if(hpcd->Instance==USB_DRD_FS)
657   {
658   /* USER CODE BEGIN USB_DRD_FS_MspInit 0 */
659 
660   /* USER CODE END USB_DRD_FS_MspInit 0 */
661 
662   /** Initializes the peripherals clock
663   */
664     PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USB;
665     PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_HSI48;
666     if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
667     {
668       Error_Handler();
669     }
670 
671     __HAL_RCC_GPIOA_CLK_ENABLE();
672     /**USB GPIO Configuration
673     PA11     ------> USB_DM
674     PA12     ------> USB_DP
675     */
676     GPIO_InitStruct.Pin = USB_FS_N_Pin|USB_FS_P_Pin;
677     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
678     GPIO_InitStruct.Pull = GPIO_NOPULL;
679     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
680     GPIO_InitStruct.Alternate = GPIO_AF10_USB;
681     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
682 
683     /* Peripheral clock enable */
684     __HAL_RCC_USB_CLK_ENABLE();
685   /* USER CODE BEGIN USB_DRD_FS_MspInit 1 */
686 
687   /* USER CODE END USB_DRD_FS_MspInit 1 */
688   }
689 
690 }
691 
692 /**
693 * @brief PCD MSP De-Initialization
694 * This function freeze the hardware resources used in this example
695 * @param hpcd: PCD handle pointer
696 * @retval None
697 */
HAL_PCD_MspDeInit(PCD_HandleTypeDef * hpcd)698 void HAL_PCD_MspDeInit(PCD_HandleTypeDef* hpcd)
699 {
700   if(hpcd->Instance==USB_DRD_FS)
701   {
702   /* USER CODE BEGIN USB_DRD_FS_MspDeInit 0 */
703 
704   /* USER CODE END USB_DRD_FS_MspDeInit 0 */
705     /* Peripheral clock disable */
706     __HAL_RCC_USB_CLK_DISABLE();
707 
708     /**USB GPIO Configuration
709     PA11     ------> USB_DM
710     PA12     ------> USB_DP
711     */
712     HAL_GPIO_DeInit(GPIOA, USB_FS_N_Pin|USB_FS_P_Pin);
713 
714   /* USER CODE BEGIN USB_DRD_FS_MspDeInit 1 */
715 
716   /* USER CODE END USB_DRD_FS_MspDeInit 1 */
717   }
718 
719 }
720 
721 /* USER CODE BEGIN 1 */
722 
723 /* USER CODE END 1 */
724