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) 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 
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 /**
80 * @brief ADC MSP Initialization
81 * This function configures the hardware resources used in this example
82 * @param hadc: ADC handle pointer
83 * @retval None
84 */
HAL_ADC_MspInit(ADC_HandleTypeDef * hadc)85 void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
86 {
87   GPIO_InitTypeDef GPIO_InitStruct = {0};
88   RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
89   if(hadc->Instance==ADC1)
90   {
91   /* USER CODE BEGIN ADC1_MspInit 0 */
92 
93   /* USER CODE END ADC1_MspInit 0 */
94 
95   /** Initializes the peripherals clock
96   */
97     PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_ADCDAC;
98     PeriphClkInitStruct.AdcDacClockSelection = RCC_ADCDACCLKSOURCE_HCLK;
99     if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
100     {
101       Error_Handler();
102     }
103 
104     /* Peripheral clock enable */
105     __HAL_RCC_ADC_CLK_ENABLE();
106 
107     __HAL_RCC_GPIOC_CLK_ENABLE();
108     __HAL_RCC_GPIOA_CLK_ENABLE();
109     __HAL_RCC_GPIOB_CLK_ENABLE();
110     /**ADC1 GPIO Configuration
111     PC0     ------> ADC1_INP10
112     PC1     ------> ADC1_INP11
113     PA0     ------> ADC1_INP0
114     PA1     ------> ADC1_INP1
115     PA2     ------> ADC1_INP14
116     PB0     ------> ADC1_INP9
117     */
118     GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1;
119     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
120     GPIO_InitStruct.Pull = GPIO_NOPULL;
121     HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
122 
123     GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2;
124     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
125     GPIO_InitStruct.Pull = GPIO_NOPULL;
126     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
127 
128     GPIO_InitStruct.Pin = GPIO_PIN_0;
129     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
130     GPIO_InitStruct.Pull = GPIO_NOPULL;
131     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
132 
133   /* USER CODE BEGIN ADC1_MspInit 1 */
134 
135   /* USER CODE END ADC1_MspInit 1 */
136   }
137 
138 }
139 
140 /**
141 * @brief ADC MSP De-Initialization
142 * This function freeze the hardware resources used in this example
143 * @param hadc: ADC handle pointer
144 * @retval None
145 */
HAL_ADC_MspDeInit(ADC_HandleTypeDef * hadc)146 void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc)
147 {
148   if(hadc->Instance==ADC1)
149   {
150   /* USER CODE BEGIN ADC1_MspDeInit 0 */
151 
152   /* USER CODE END ADC1_MspDeInit 0 */
153     /* Peripheral clock disable */
154     __HAL_RCC_ADC_CLK_DISABLE();
155 
156     /**ADC1 GPIO Configuration
157     PC0     ------> ADC1_INP10
158     PC1     ------> ADC1_INP11
159     PA0     ------> ADC1_INP0
160     PA1     ------> ADC1_INP1
161     PA2     ------> ADC1_INP14
162     PB0     ------> ADC1_INP9
163     */
164     HAL_GPIO_DeInit(GPIOC, GPIO_PIN_0|GPIO_PIN_1);
165 
166     HAL_GPIO_DeInit(GPIOA, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2);
167 
168     HAL_GPIO_DeInit(GPIOB, GPIO_PIN_0);
169 
170   /* USER CODE BEGIN ADC1_MspDeInit 1 */
171 
172   /* USER CODE END ADC1_MspDeInit 1 */
173   }
174 
175 }
176 
177 /**
178 * @brief TIM_Base MSP Initialization
179 * This function configures the hardware resources used in this example
180 * @param htim_base: TIM_Base handle pointer
181 * @retval None
182 */
HAL_TIM_Base_MspInit(TIM_HandleTypeDef * htim_base)183 void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
184 {
185   if(htim_base->Instance==TIM1)
186   {
187   /* USER CODE BEGIN TIM1_MspInit 0 */
188 
189   /* USER CODE END TIM1_MspInit 0 */
190     /* Peripheral clock enable */
191     __HAL_RCC_TIM1_CLK_ENABLE();
192   /* USER CODE BEGIN TIM1_MspInit 1 */
193 
194   /* USER CODE END TIM1_MspInit 1 */
195   }
196   else if(htim_base->Instance==TIM2)
197   {
198   /* USER CODE BEGIN TIM2_MspInit 0 */
199 
200   /* USER CODE END TIM2_MspInit 0 */
201     /* Peripheral clock enable */
202     __HAL_RCC_TIM2_CLK_ENABLE();
203   /* USER CODE BEGIN TIM2_MspInit 1 */
204 
205   /* USER CODE END TIM2_MspInit 1 */
206   }
207   else if(htim_base->Instance==TIM3)
208   {
209   /* USER CODE BEGIN TIM3_MspInit 0 */
210 
211   /* USER CODE END TIM3_MspInit 0 */
212     /* Peripheral clock enable */
213     __HAL_RCC_TIM3_CLK_ENABLE();
214   /* USER CODE BEGIN TIM3_MspInit 1 */
215 
216   /* USER CODE END TIM3_MspInit 1 */
217   }
218 
219 }
220 
HAL_TIM_MspPostInit(TIM_HandleTypeDef * htim)221 void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim)
222 {
223   GPIO_InitTypeDef GPIO_InitStruct = {0};
224   if(htim->Instance==TIM1)
225   {
226   /* USER CODE BEGIN TIM1_MspPostInit 0 */
227 
228   /* USER CODE END TIM1_MspPostInit 0 */
229     __HAL_RCC_GPIOB_CLK_ENABLE();
230     /**TIM1 GPIO Configuration
231     PB4(NJTRST)     ------> TIM1_CH2
232     */
233     GPIO_InitStruct.Pin = GPIO_PIN_4;
234     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
235     GPIO_InitStruct.Pull = GPIO_NOPULL;
236     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
237     GPIO_InitStruct.Alternate = GPIO_AF14_TIM1;
238     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
239 
240   /* USER CODE BEGIN TIM1_MspPostInit 1 */
241 
242   /* USER CODE END TIM1_MspPostInit 1 */
243   }
244   else if(htim->Instance==TIM2)
245   {
246   /* USER CODE BEGIN TIM2_MspPostInit 0 */
247 
248   /* USER CODE END TIM2_MspPostInit 0 */
249 
250     __HAL_RCC_GPIOB_CLK_ENABLE();
251     /**TIM2 GPIO Configuration
252     PB10     ------> TIM2_CH3
253     */
254     GPIO_InitStruct.Pin = GPIO_PIN_10;
255     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
256     GPIO_InitStruct.Pull = GPIO_NOPULL;
257     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
258     GPIO_InitStruct.Alternate = GPIO_AF1_TIM2;
259     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
260 
261   /* USER CODE BEGIN TIM2_MspPostInit 1 */
262 
263   /* USER CODE END TIM2_MspPostInit 1 */
264   }
265   else if(htim->Instance==TIM3)
266   {
267   /* USER CODE BEGIN TIM3_MspPostInit 0 */
268 
269   /* USER CODE END TIM3_MspPostInit 0 */
270 
271     __HAL_RCC_GPIOA_CLK_ENABLE();
272     __HAL_RCC_GPIOC_CLK_ENABLE();
273     /**TIM3 GPIO Configuration
274     PA7     ------> TIM3_CH2
275     PC6     ------> TIM3_CH1
276     PC9     ------> TIM3_CH4
277     */
278     GPIO_InitStruct.Pin = GPIO_PIN_7;
279     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
280     GPIO_InitStruct.Pull = GPIO_NOPULL;
281     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
282     GPIO_InitStruct.Alternate = GPIO_AF2_TIM3;
283     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
284 
285     GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_9;
286     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
287     GPIO_InitStruct.Pull = GPIO_NOPULL;
288     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
289     GPIO_InitStruct.Alternate = GPIO_AF2_TIM3;
290     HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
291 
292   /* USER CODE BEGIN TIM3_MspPostInit 1 */
293 
294   /* USER CODE END TIM3_MspPostInit 1 */
295   }
296 
297 }
298 /**
299 * @brief TIM_Base MSP De-Initialization
300 * This function freeze the hardware resources used in this example
301 * @param htim_base: TIM_Base handle pointer
302 * @retval None
303 */
HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef * htim_base)304 void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)
305 {
306   if(htim_base->Instance==TIM1)
307   {
308   /* USER CODE BEGIN TIM1_MspDeInit 0 */
309 
310   /* USER CODE END TIM1_MspDeInit 0 */
311     /* Peripheral clock disable */
312     __HAL_RCC_TIM1_CLK_DISABLE();
313   /* USER CODE BEGIN TIM1_MspDeInit 1 */
314 
315   /* USER CODE END TIM1_MspDeInit 1 */
316   }
317   else if(htim_base->Instance==TIM2)
318   {
319   /* USER CODE BEGIN TIM2_MspDeInit 0 */
320 
321   /* USER CODE END TIM2_MspDeInit 0 */
322     /* Peripheral clock disable */
323     __HAL_RCC_TIM2_CLK_DISABLE();
324   /* USER CODE BEGIN TIM2_MspDeInit 1 */
325 
326   /* USER CODE END TIM2_MspDeInit 1 */
327   }
328   else if(htim_base->Instance==TIM3)
329   {
330   /* USER CODE BEGIN TIM3_MspDeInit 0 */
331 
332   /* USER CODE END TIM3_MspDeInit 0 */
333     /* Peripheral clock disable */
334     __HAL_RCC_TIM3_CLK_DISABLE();
335   /* USER CODE BEGIN TIM3_MspDeInit 1 */
336 
337   /* USER CODE END TIM3_MspDeInit 1 */
338   }
339 
340 }
341 
342 /**
343 * @brief UART MSP Initialization
344 * This function configures the hardware resources used in this example
345 * @param huart: UART handle pointer
346 * @retval None
347 */
HAL_UART_MspInit(UART_HandleTypeDef * huart)348 void HAL_UART_MspInit(UART_HandleTypeDef* huart)
349 {
350   GPIO_InitTypeDef GPIO_InitStruct = {0};
351   RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
352   if(huart->Instance==USART1)
353   {
354   /* USER CODE BEGIN USART1_MspInit 0 */
355 
356   /* USER CODE END USART1_MspInit 0 */
357 
358   /** Initializes the peripherals clock
359   */
360     PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART1;
361     PeriphClkInitStruct.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2;
362     if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
363     {
364       Error_Handler();
365     }
366 
367     /* Peripheral clock enable */
368     __HAL_RCC_USART1_CLK_ENABLE();
369 
370     __HAL_RCC_GPIOB_CLK_ENABLE();
371     /**USART1 GPIO Configuration
372     PB14     ------> USART1_TX
373     PB15     ------> USART1_RX
374     */
375     GPIO_InitStruct.Pin = ARD_D1_TX_Pin|ARD_D0_RX_Pin;
376     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
377     GPIO_InitStruct.Pull = GPIO_NOPULL;
378     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
379     GPIO_InitStruct.Alternate = GPIO_AF4_USART1;
380     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
381 
382   /* USER CODE BEGIN USART1_MspInit 1 */
383 
384   /* USER CODE END USART1_MspInit 1 */
385   }
386   else if(huart->Instance==USART3)
387   {
388   /* USER CODE BEGIN USART3_MspInit 0 */
389 
390   /* USER CODE END USART3_MspInit 0 */
391 
392   /** Initializes the peripherals clock
393   */
394     PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART3;
395     PeriphClkInitStruct.Usart3ClockSelection = RCC_USART3CLKSOURCE_PCLK1;
396     if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
397     {
398       Error_Handler();
399     }
400 
401     /* Peripheral clock enable */
402     __HAL_RCC_USART3_CLK_ENABLE();
403 
404     __HAL_RCC_GPIOA_CLK_ENABLE();
405     /**USART3 GPIO Configuration
406     PA3     ------> USART3_RX
407     PA4     ------> USART3_TX
408     */
409     GPIO_InitStruct.Pin = T_VCP_RX_Pin|T_VCP_TX_Pin;
410     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
411     GPIO_InitStruct.Pull = GPIO_NOPULL;
412     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
413     GPIO_InitStruct.Alternate = GPIO_AF13_USART3;
414     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
415 
416   /* USER CODE BEGIN USART3_MspInit 1 */
417 
418   /* USER CODE END USART3_MspInit 1 */
419   }
420 
421 }
422 
423 /**
424 * @brief UART MSP De-Initialization
425 * This function freeze the hardware resources used in this example
426 * @param huart: UART handle pointer
427 * @retval None
428 */
HAL_UART_MspDeInit(UART_HandleTypeDef * huart)429 void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
430 {
431   if(huart->Instance==USART1)
432   {
433   /* USER CODE BEGIN USART1_MspDeInit 0 */
434 
435   /* USER CODE END USART1_MspDeInit 0 */
436     /* Peripheral clock disable */
437     __HAL_RCC_USART1_CLK_DISABLE();
438 
439     /**USART1 GPIO Configuration
440     PB14     ------> USART1_TX
441     PB15     ------> USART1_RX
442     */
443     HAL_GPIO_DeInit(GPIOB, ARD_D1_TX_Pin|ARD_D0_RX_Pin);
444 
445   /* USER CODE BEGIN USART1_MspDeInit 1 */
446 
447   /* USER CODE END USART1_MspDeInit 1 */
448   }
449   else if(huart->Instance==USART3)
450   {
451   /* USER CODE BEGIN USART3_MspDeInit 0 */
452 
453   /* USER CODE END USART3_MspDeInit 0 */
454     /* Peripheral clock disable */
455     __HAL_RCC_USART3_CLK_DISABLE();
456 
457     /**USART3 GPIO Configuration
458     PA3     ------> USART3_RX
459     PA4     ------> USART3_TX
460     */
461     HAL_GPIO_DeInit(GPIOA, T_VCP_RX_Pin|T_VCP_TX_Pin);
462 
463   /* USER CODE BEGIN USART3_MspDeInit 1 */
464 
465   /* USER CODE END USART3_MspDeInit 1 */
466   }
467 
468 }
469 
470 /**
471 * @brief PCD MSP Initialization
472 * This function configures the hardware resources used in this example
473 * @param hpcd: PCD handle pointer
474 * @retval None
475 */
HAL_PCD_MspInit(PCD_HandleTypeDef * hpcd)476 void HAL_PCD_MspInit(PCD_HandleTypeDef* hpcd)
477 {
478   GPIO_InitTypeDef GPIO_InitStruct = {0};
479   RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
480   if(hpcd->Instance==USB_DRD_FS)
481   {
482   /* USER CODE BEGIN USB_DRD_FS_MspInit 0 */
483 
484   /* USER CODE END USB_DRD_FS_MspInit 0 */
485 
486   /** Initializes the peripherals clock
487   */
488     PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USB;
489     PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_HSI48;
490     if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
491     {
492       Error_Handler();
493     }
494 
495     __HAL_RCC_GPIOA_CLK_ENABLE();
496     /**USB GPIO Configuration
497     PA11     ------> USB_DM
498     PA12     ------> USB_DP
499     */
500     GPIO_InitStruct.Pin = USB_FS_DN_Pin|USB_FS_DP_Pin;
501     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
502     GPIO_InitStruct.Pull = GPIO_NOPULL;
503     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
504     GPIO_InitStruct.Alternate = GPIO_AF10_USB;
505     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
506 
507     /* Peripheral clock enable */
508     __HAL_RCC_USB_CLK_ENABLE();
509   /* USER CODE BEGIN USB_DRD_FS_MspInit 1 */
510 
511   /* USER CODE END USB_DRD_FS_MspInit 1 */
512   }
513 
514 }
515 
516 /**
517 * @brief PCD MSP De-Initialization
518 * This function freeze the hardware resources used in this example
519 * @param hpcd: PCD handle pointer
520 * @retval None
521 */
HAL_PCD_MspDeInit(PCD_HandleTypeDef * hpcd)522 void HAL_PCD_MspDeInit(PCD_HandleTypeDef* hpcd)
523 {
524   if(hpcd->Instance==USB_DRD_FS)
525   {
526   /* USER CODE BEGIN USB_DRD_FS_MspDeInit 0 */
527 
528   /* USER CODE END USB_DRD_FS_MspDeInit 0 */
529     /* Peripheral clock disable */
530     __HAL_RCC_USB_CLK_DISABLE();
531 
532     /**USB GPIO Configuration
533     PA11     ------> USB_DM
534     PA12     ------> USB_DP
535     */
536     HAL_GPIO_DeInit(GPIOA, USB_FS_DN_Pin|USB_FS_DP_Pin);
537 
538   /* USER CODE BEGIN USB_DRD_FS_MspDeInit 1 */
539 
540   /* USER CODE END USB_DRD_FS_MspDeInit 1 */
541   }
542 
543 }
544 
545 /* USER CODE BEGIN 1 */
546 
547 /* USER CODE END 1 */
548