1 /* USER CODE BEGIN Header */
2 /**
3   ******************************************************************************
4   * File Name          : stm32l4xx_hal_msp.c
5   * Description        : This file provides code for the MSP Initialization
6   *                      and de-Initialization codes.
7   ******************************************************************************
8   * @attention
9   *
10   * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
11   * All rights reserved.</center></h2>
12   *
13   * This software component is licensed by ST under BSD 3-Clause license,
14   * the "License"; You may not use this file except in compliance with the
15   * License. You may obtain a copy of the License at:
16   *                        opensource.org/licenses/BSD-3-Clause
17   *
18   ******************************************************************************
19   */
20 /* USER CODE END Header */
21 
22 /* Includes ------------------------------------------------------------------*/
23 #include "main.h"
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 
69   /* USER CODE BEGIN MspInit 0 */
70 
71   /* USER CODE END MspInit 0 */
72 
73   __HAL_RCC_SYSCFG_CLK_ENABLE();
74   __HAL_RCC_PWR_CLK_ENABLE();
75 
76   /* System interrupt init*/
77 
78   /* USER CODE BEGIN MspInit 1 */
79 
80   /* USER CODE END MspInit 1 */
81 }
82 
83 /**
84 * @brief ADC MSP Initialization
85 * This function configures the hardware resources used in this example
86 * @param hadc: ADC handle pointer
87 * @retval None
88 */
HAL_ADC_MspInit(ADC_HandleTypeDef * hadc)89 void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
90 {
91   GPIO_InitTypeDef GPIO_InitStruct = {0};
92   if(hadc->Instance==ADC1)
93   {
94   /* USER CODE BEGIN ADC1_MspInit 0 */
95 
96   /* USER CODE END ADC1_MspInit 0 */
97     /* Peripheral clock enable */
98     __HAL_RCC_ADC_CLK_ENABLE();
99 
100     __HAL_RCC_GPIOC_CLK_ENABLE();
101     /**ADC1 GPIO Configuration
102     PC0     ------> ADC1_IN1
103     PC1     ------> ADC1_IN2
104     */
105     GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1;
106     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
107     GPIO_InitStruct.Pull = GPIO_NOPULL;
108     HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
109 
110   /* USER CODE BEGIN ADC1_MspInit 1 */
111 
112   /* USER CODE END ADC1_MspInit 1 */
113 
114   }
115 
116 }
117 
118 /**
119 * @brief ADC MSP De-Initialization
120 * This function freeze the hardware resources used in this example
121 * @param hadc: ADC handle pointer
122 * @retval None
123 */
HAL_ADC_MspDeInit(ADC_HandleTypeDef * hadc)124 void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc)
125 {
126   if(hadc->Instance==ADC1)
127   {
128   /* USER CODE BEGIN ADC1_MspDeInit 0 */
129 
130   /* USER CODE END ADC1_MspDeInit 0 */
131     /* Peripheral clock disable */
132     __HAL_RCC_ADC_CLK_DISABLE();
133 
134     /**ADC1 GPIO Configuration
135     PC0     ------> ADC1_IN1
136     PC1     ------> ADC1_IN2
137     */
138     HAL_GPIO_DeInit(GPIOC, GPIO_PIN_0|GPIO_PIN_1);
139 
140   /* USER CODE BEGIN ADC1_MspDeInit 1 */
141 
142   /* USER CODE END ADC1_MspDeInit 1 */
143   }
144 
145 }
146 
147 /**
148 * @brief CAN MSP Initialization
149 * This function configures the hardware resources used in this example
150 * @param hcan: CAN handle pointer
151 * @retval None
152 */
HAL_CAN_MspInit(CAN_HandleTypeDef * hcan)153 void HAL_CAN_MspInit(CAN_HandleTypeDef* hcan)
154 {
155   GPIO_InitTypeDef GPIO_InitStruct = {0};
156   if(hcan->Instance==CAN1)
157   {
158   /* USER CODE BEGIN CAN1_MspInit 0 */
159 
160   /* USER CODE END CAN1_MspInit 0 */
161     /* Peripheral clock enable */
162     __HAL_RCC_CAN1_CLK_ENABLE();
163 
164     __HAL_RCC_GPIOD_CLK_ENABLE();
165     /**CAN1 GPIO Configuration
166     PD0     ------> CAN1_RX
167     PD1     ------> CAN1_TX
168     */
169     GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1;
170     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
171     GPIO_InitStruct.Pull = GPIO_NOPULL;
172     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
173     GPIO_InitStruct.Alternate = GPIO_AF9_CAN1;
174     HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
175 
176   /* USER CODE BEGIN CAN1_MspInit 1 */
177 
178   /* USER CODE END CAN1_MspInit 1 */
179 
180   }
181 
182 }
183 
184 /**
185 * @brief CAN MSP De-Initialization
186 * This function freeze the hardware resources used in this example
187 * @param hcan: CAN handle pointer
188 * @retval None
189 */
HAL_CAN_MspDeInit(CAN_HandleTypeDef * hcan)190 void HAL_CAN_MspDeInit(CAN_HandleTypeDef* hcan)
191 {
192   if(hcan->Instance==CAN1)
193   {
194   /* USER CODE BEGIN CAN1_MspDeInit 0 */
195 
196   /* USER CODE END CAN1_MspDeInit 0 */
197     /* Peripheral clock disable */
198     __HAL_RCC_CAN1_CLK_DISABLE();
199 
200     /**CAN1 GPIO Configuration
201     PD0     ------> CAN1_RX
202     PD1     ------> CAN1_TX
203     */
204     HAL_GPIO_DeInit(GPIOD, GPIO_PIN_0|GPIO_PIN_1);
205 
206   /* USER CODE BEGIN CAN1_MspDeInit 1 */
207 
208   /* USER CODE END CAN1_MspDeInit 1 */
209   }
210 
211 }
212 
213 /**
214 * @brief DAC MSP Initialization
215 * This function configures the hardware resources used in this example
216 * @param hdac: DAC handle pointer
217 * @retval None
218 */
HAL_DAC_MspInit(DAC_HandleTypeDef * hdac)219 void HAL_DAC_MspInit(DAC_HandleTypeDef* hdac)
220 {
221   GPIO_InitTypeDef GPIO_InitStruct = {0};
222   if(hdac->Instance==DAC1)
223   {
224   /* USER CODE BEGIN DAC1_MspInit 0 */
225 
226   /* USER CODE END DAC1_MspInit 0 */
227     /* Peripheral clock enable */
228     __HAL_RCC_DAC1_CLK_ENABLE();
229 
230     __HAL_RCC_GPIOA_CLK_ENABLE();
231     /**DAC1 GPIO Configuration
232     PA4     ------> DAC1_OUT1
233     */
234     GPIO_InitStruct.Pin = GPIO_PIN_4;
235     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
236     GPIO_InitStruct.Pull = GPIO_NOPULL;
237     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
238 
239   /* USER CODE BEGIN DAC1_MspInit 1 */
240 
241   /* USER CODE END DAC1_MspInit 1 */
242 
243   }
244 
245 }
246 
247 /**
248 * @brief DAC MSP De-Initialization
249 * This function freeze the hardware resources used in this example
250 * @param hdac: DAC handle pointer
251 * @retval None
252 */
HAL_DAC_MspDeInit(DAC_HandleTypeDef * hdac)253 void HAL_DAC_MspDeInit(DAC_HandleTypeDef* hdac)
254 {
255   if(hdac->Instance==DAC1)
256   {
257   /* USER CODE BEGIN DAC1_MspDeInit 0 */
258 
259   /* USER CODE END DAC1_MspDeInit 0 */
260     /* Peripheral clock disable */
261     __HAL_RCC_DAC1_CLK_DISABLE();
262 
263     /**DAC1 GPIO Configuration
264     PA4     ------> DAC1_OUT1
265     */
266     HAL_GPIO_DeInit(GPIOA, GPIO_PIN_4);
267 
268   /* USER CODE BEGIN DAC1_MspDeInit 1 */
269 
270   /* USER CODE END DAC1_MspDeInit 1 */
271   }
272 
273 }
274 
275 /**
276 * @brief I2C MSP Initialization
277 * This function configures the hardware resources used in this example
278 * @param hi2c: I2C handle pointer
279 * @retval None
280 */
HAL_I2C_MspInit(I2C_HandleTypeDef * hi2c)281 void HAL_I2C_MspInit(I2C_HandleTypeDef* hi2c)
282 {
283   GPIO_InitTypeDef GPIO_InitStruct = {0};
284   RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
285   if(hi2c->Instance==I2C1)
286   {
287   /* USER CODE BEGIN I2C1_MspInit 0 */
288 
289   /* USER CODE END I2C1_MspInit 0 */
290 
291   /** Initializes the peripherals clock
292   */
293     PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_I2C1;
294     PeriphClkInit.I2c1ClockSelection = RCC_I2C1CLKSOURCE_PCLK1;
295     if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
296     {
297       Error_Handler();
298     }
299 
300     __HAL_RCC_GPIOG_CLK_ENABLE();
301     HAL_PWREx_EnableVddIO2();
302     /**I2C1 GPIO Configuration
303     PG13     ------> I2C1_SDA
304     PG14     ------> I2C1_SCL
305     */
306     GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_14;
307     GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
308     GPIO_InitStruct.Pull = GPIO_NOPULL;
309     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
310     GPIO_InitStruct.Alternate = GPIO_AF4_I2C1;
311     HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
312 
313     /* Peripheral clock enable */
314     __HAL_RCC_I2C1_CLK_ENABLE();
315   /* USER CODE BEGIN I2C1_MspInit 1 */
316 
317   /* USER CODE END I2C1_MspInit 1 */
318 
319   }
320 
321 }
322 
323 /**
324 * @brief I2C MSP De-Initialization
325 * This function freeze the hardware resources used in this example
326 * @param hi2c: I2C handle pointer
327 * @retval None
328 */
HAL_I2C_MspDeInit(I2C_HandleTypeDef * hi2c)329 void HAL_I2C_MspDeInit(I2C_HandleTypeDef* hi2c)
330 {
331   if(hi2c->Instance==I2C1)
332   {
333   /* USER CODE BEGIN I2C1_MspDeInit 0 */
334 
335   /* USER CODE END I2C1_MspDeInit 0 */
336     /* Peripheral clock disable */
337     __HAL_RCC_I2C1_CLK_DISABLE();
338 
339     /**I2C1 GPIO Configuration
340     PG13     ------> I2C1_SDA
341     PG14     ------> I2C1_SCL
342     */
343     HAL_GPIO_DeInit(GPIOG, GPIO_PIN_13);
344 
345     HAL_GPIO_DeInit(GPIOG, GPIO_PIN_14);
346 
347   /* USER CODE BEGIN I2C1_MspDeInit 1 */
348 
349   /* USER CODE END I2C1_MspDeInit 1 */
350   }
351 
352 }
353 
354 /**
355 * @brief UART MSP Initialization
356 * This function configures the hardware resources used in this example
357 * @param huart: UART handle pointer
358 * @retval None
359 */
HAL_UART_MspInit(UART_HandleTypeDef * huart)360 void HAL_UART_MspInit(UART_HandleTypeDef* huart)
361 {
362   GPIO_InitTypeDef GPIO_InitStruct = {0};
363   RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
364   if(huart->Instance==LPUART1)
365   {
366   /* USER CODE BEGIN LPUART1_MspInit 0 */
367 
368   /* USER CODE END LPUART1_MspInit 0 */
369 
370   /** Initializes the peripherals clock
371   */
372     PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_LPUART1;
373     PeriphClkInit.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_PCLK1;
374     if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
375     {
376       Error_Handler();
377     }
378 
379     /* Peripheral clock enable */
380     __HAL_RCC_LPUART1_CLK_ENABLE();
381 
382     __HAL_RCC_GPIOG_CLK_ENABLE();
383     HAL_PWREx_EnableVddIO2();
384     /**LPUART1 GPIO Configuration
385     PG7     ------> LPUART1_TX
386     PG8     ------> LPUART1_RX
387     */
388     GPIO_InitStruct.Pin = STLK_RX_Pin|STLK_TX_Pin;
389     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
390     GPIO_InitStruct.Pull = GPIO_NOPULL;
391     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
392     GPIO_InitStruct.Alternate = GPIO_AF8_LPUART1;
393     HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
394 
395   /* USER CODE BEGIN LPUART1_MspInit 1 */
396 
397   /* USER CODE END LPUART1_MspInit 1 */
398   }
399   else if(huart->Instance==USART2)
400   {
401   /* USER CODE BEGIN USART2_MspInit 0 */
402 
403   /* USER CODE END USART2_MspInit 0 */
404 
405   /** Initializes the peripherals clock
406   */
407     PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART2;
408     PeriphClkInit.Usart2ClockSelection = RCC_USART2CLKSOURCE_PCLK1;
409     if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
410     {
411       Error_Handler();
412     }
413 
414     /* Peripheral clock enable */
415     __HAL_RCC_USART2_CLK_ENABLE();
416 
417     __HAL_RCC_GPIOD_CLK_ENABLE();
418     /**USART2 GPIO Configuration
419     PD4     ------> USART2_RTS
420     PD5     ------> USART2_TX
421     PD6     ------> USART2_RX
422     */
423     GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6;
424     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
425     GPIO_InitStruct.Pull = GPIO_NOPULL;
426     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
427     GPIO_InitStruct.Alternate = GPIO_AF7_USART2;
428     HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
429 
430     /* USART2 interrupt Init */
431     HAL_NVIC_SetPriority(USART2_IRQn, 0, 0);
432     HAL_NVIC_EnableIRQ(USART2_IRQn);
433   /* USER CODE BEGIN USART2_MspInit 1 */
434 
435   /* USER CODE END USART2_MspInit 1 */
436   }
437 
438 }
439 
440 /**
441 * @brief UART MSP De-Initialization
442 * This function freeze the hardware resources used in this example
443 * @param huart: UART handle pointer
444 * @retval None
445 */
HAL_UART_MspDeInit(UART_HandleTypeDef * huart)446 void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
447 {
448   if(huart->Instance==LPUART1)
449   {
450   /* USER CODE BEGIN LPUART1_MspDeInit 0 */
451 
452   /* USER CODE END LPUART1_MspDeInit 0 */
453     /* Peripheral clock disable */
454     __HAL_RCC_LPUART1_CLK_DISABLE();
455 
456     /**LPUART1 GPIO Configuration
457     PG7     ------> LPUART1_TX
458     PG8     ------> LPUART1_RX
459     */
460     HAL_GPIO_DeInit(GPIOG, STLK_RX_Pin|STLK_TX_Pin);
461 
462   /* USER CODE BEGIN LPUART1_MspDeInit 1 */
463 
464   /* USER CODE END LPUART1_MspDeInit 1 */
465   }
466   else if(huart->Instance==USART2)
467   {
468   /* USER CODE BEGIN USART2_MspDeInit 0 */
469 
470   /* USER CODE END USART2_MspDeInit 0 */
471     /* Peripheral clock disable */
472     __HAL_RCC_USART2_CLK_DISABLE();
473 
474     /**USART2 GPIO Configuration
475     PD4     ------> USART2_RTS
476     PD5     ------> USART2_TX
477     PD6     ------> USART2_RX
478     */
479     HAL_GPIO_DeInit(GPIOD, GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6);
480 
481     /* USART2 interrupt DeInit */
482     HAL_NVIC_DisableIRQ(USART2_IRQn);
483   /* USER CODE BEGIN USART2_MspDeInit 1 */
484 
485   /* USER CODE END USART2_MspDeInit 1 */
486   }
487 
488 }
489 
490 /**
491 * @brief QSPI MSP Initialization
492 * This function configures the hardware resources used in this example
493 * @param hqspi: QSPI handle pointer
494 * @retval None
495 */
HAL_QSPI_MspInit(QSPI_HandleTypeDef * hqspi)496 void HAL_QSPI_MspInit(QSPI_HandleTypeDef* hqspi)
497 {
498   GPIO_InitTypeDef GPIO_InitStruct = {0};
499   if(hqspi->Instance==QUADSPI)
500   {
501   /* USER CODE BEGIN QUADSPI_MspInit 0 */
502 
503   /* USER CODE END QUADSPI_MspInit 0 */
504     /* Peripheral clock enable */
505     __HAL_RCC_QSPI_CLK_ENABLE();
506 
507     __HAL_RCC_GPIOF_CLK_ENABLE();
508     __HAL_RCC_GPIOE_CLK_ENABLE();
509     /**QUADSPI GPIO Configuration
510     PF8     ------> QUADSPI_BK1_IO0
511     PF9     ------> QUADSPI_BK1_IO1
512     PF10     ------> QUADSPI_CLK
513     PE11     ------> QUADSPI_BK1_NCS
514     */
515     GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9;
516     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
517     GPIO_InitStruct.Pull = GPIO_NOPULL;
518     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
519     GPIO_InitStruct.Alternate = GPIO_AF10_QUADSPI;
520     HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
521 
522     GPIO_InitStruct.Pin = GPIO_PIN_10;
523     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
524     GPIO_InitStruct.Pull = GPIO_NOPULL;
525     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
526     GPIO_InitStruct.Alternate = GPIO_AF3_QUADSPI;
527     HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
528 
529     GPIO_InitStruct.Pin = GPIO_PIN_11;
530     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
531     GPIO_InitStruct.Pull = GPIO_NOPULL;
532     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
533     GPIO_InitStruct.Alternate = GPIO_AF10_QUADSPI;
534     HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
535 
536   /* USER CODE BEGIN QUADSPI_MspInit 1 */
537 
538   /* USER CODE END QUADSPI_MspInit 1 */
539 
540   }
541 
542 }
543 
544 /**
545 * @brief QSPI MSP De-Initialization
546 * This function freeze the hardware resources used in this example
547 * @param hqspi: QSPI handle pointer
548 * @retval None
549 */
HAL_QSPI_MspDeInit(QSPI_HandleTypeDef * hqspi)550 void HAL_QSPI_MspDeInit(QSPI_HandleTypeDef* hqspi)
551 {
552   if(hqspi->Instance==QUADSPI)
553   {
554   /* USER CODE BEGIN QUADSPI_MspDeInit 0 */
555 
556   /* USER CODE END QUADSPI_MspDeInit 0 */
557     /* Peripheral clock disable */
558     __HAL_RCC_QSPI_CLK_DISABLE();
559 
560     /**QUADSPI GPIO Configuration
561     PF8     ------> QUADSPI_BK1_IO0
562     PF9     ------> QUADSPI_BK1_IO1
563     PF10     ------> QUADSPI_CLK
564     PE11     ------> QUADSPI_BK1_NCS
565     */
566     HAL_GPIO_DeInit(GPIOF, GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10);
567 
568     HAL_GPIO_DeInit(GPIOE, GPIO_PIN_11);
569 
570   /* USER CODE BEGIN QUADSPI_MspDeInit 1 */
571 
572   /* USER CODE END QUADSPI_MspDeInit 1 */
573   }
574 
575 }
576 
577 /**
578 * @brief RTC MSP Initialization
579 * This function configures the hardware resources used in this example
580 * @param hrtc: RTC handle pointer
581 * @retval None
582 */
HAL_RTC_MspInit(RTC_HandleTypeDef * hrtc)583 void HAL_RTC_MspInit(RTC_HandleTypeDef* hrtc)
584 {
585   RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
586   if(hrtc->Instance==RTC)
587   {
588   /* USER CODE BEGIN RTC_MspInit 0 */
589 
590   /* USER CODE END RTC_MspInit 0 */
591 
592   /** Initializes the peripherals clock
593   */
594     PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_RTC;
595     PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSI;
596     if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
597     {
598       Error_Handler();
599     }
600 
601     /* Peripheral clock enable */
602     __HAL_RCC_RTC_ENABLE();
603   /* USER CODE BEGIN RTC_MspInit 1 */
604 
605   /* USER CODE END RTC_MspInit 1 */
606 
607   }
608 
609 }
610 
611 /**
612 * @brief RTC MSP De-Initialization
613 * This function freeze the hardware resources used in this example
614 * @param hrtc: RTC handle pointer
615 * @retval None
616 */
HAL_RTC_MspDeInit(RTC_HandleTypeDef * hrtc)617 void HAL_RTC_MspDeInit(RTC_HandleTypeDef* hrtc)
618 {
619   if(hrtc->Instance==RTC)
620   {
621   /* USER CODE BEGIN RTC_MspDeInit 0 */
622 
623   /* USER CODE END RTC_MspDeInit 0 */
624     /* Peripheral clock disable */
625     __HAL_RCC_RTC_DISABLE();
626   /* USER CODE BEGIN RTC_MspDeInit 1 */
627 
628   /* USER CODE END RTC_MspDeInit 1 */
629   }
630 
631 }
632 
633 /**
634 * @brief SPI MSP Initialization
635 * This function configures the hardware resources used in this example
636 * @param hspi: SPI handle pointer
637 * @retval None
638 */
HAL_SPI_MspInit(SPI_HandleTypeDef * hspi)639 void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
640 {
641   GPIO_InitTypeDef GPIO_InitStruct = {0};
642   if(hspi->Instance==SPI1)
643   {
644   /* USER CODE BEGIN SPI1_MspInit 0 */
645 
646   /* USER CODE END SPI1_MspInit 0 */
647     /* Peripheral clock enable */
648     __HAL_RCC_SPI1_CLK_ENABLE();
649 
650     __HAL_RCC_GPIOA_CLK_ENABLE();
651     /**SPI1 GPIO Configuration
652     PA1     ------> SPI1_SCK
653     PA6     ------> SPI1_MISO
654     PA7     ------> SPI1_MOSI
655     */
656     GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_6|GPIO_PIN_7;
657     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
658     GPIO_InitStruct.Pull = GPIO_NOPULL;
659     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
660     GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;
661     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
662 
663   /* USER CODE BEGIN SPI1_MspInit 1 */
664 
665   /* USER CODE END SPI1_MspInit 1 */
666 
667   }
668 
669 }
670 
671 /**
672 * @brief SPI MSP De-Initialization
673 * This function freeze the hardware resources used in this example
674 * @param hspi: SPI handle pointer
675 * @retval None
676 */
HAL_SPI_MspDeInit(SPI_HandleTypeDef * hspi)677 void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi)
678 {
679   if(hspi->Instance==SPI1)
680   {
681   /* USER CODE BEGIN SPI1_MspDeInit 0 */
682 
683   /* USER CODE END SPI1_MspDeInit 0 */
684     /* Peripheral clock disable */
685     __HAL_RCC_SPI1_CLK_DISABLE();
686 
687     /**SPI1 GPIO Configuration
688     PA1     ------> SPI1_SCK
689     PA6     ------> SPI1_MISO
690     PA7     ------> SPI1_MOSI
691     */
692     HAL_GPIO_DeInit(GPIOA, GPIO_PIN_1|GPIO_PIN_6|GPIO_PIN_7);
693 
694   /* USER CODE BEGIN SPI1_MspDeInit 1 */
695 
696   /* USER CODE END SPI1_MspDeInit 1 */
697   }
698 
699 }
700 
701 /**
702 * @brief TIM_PWM MSP Initialization
703 * This function configures the hardware resources used in this example
704 * @param htim_pwm: TIM_PWM handle pointer
705 * @retval None
706 */
HAL_TIM_PWM_MspInit(TIM_HandleTypeDef * htim_pwm)707 void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef* htim_pwm)
708 {
709   if(htim_pwm->Instance==TIM2)
710   {
711   /* USER CODE BEGIN TIM2_MspInit 0 */
712 
713   /* USER CODE END TIM2_MspInit 0 */
714     /* Peripheral clock enable */
715     __HAL_RCC_TIM2_CLK_ENABLE();
716   /* USER CODE BEGIN TIM2_MspInit 1 */
717 
718   /* USER CODE END TIM2_MspInit 1 */
719   }
720   else if(htim_pwm->Instance==TIM4)
721   {
722   /* USER CODE BEGIN TIM4_MspInit 0 */
723 
724   /* USER CODE END TIM4_MspInit 0 */
725     /* Peripheral clock enable */
726     __HAL_RCC_TIM4_CLK_ENABLE();
727   /* USER CODE BEGIN TIM4_MspInit 1 */
728 
729   /* USER CODE END TIM4_MspInit 1 */
730   }
731 
732 }
733 
HAL_TIM_MspPostInit(TIM_HandleTypeDef * htim)734 void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim)
735 {
736   GPIO_InitTypeDef GPIO_InitStruct = {0};
737   if(htim->Instance==TIM2)
738   {
739   /* USER CODE BEGIN TIM2_MspPostInit 0 */
740 
741   /* USER CODE END TIM2_MspPostInit 0 */
742     __HAL_RCC_GPIOA_CLK_ENABLE();
743     /**TIM2 GPIO Configuration
744     PA2     ------> TIM2_CH3
745     PA3     ------> TIM2_CH4
746     */
747     GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3;
748     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
749     GPIO_InitStruct.Pull = GPIO_NOPULL;
750     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
751     GPIO_InitStruct.Alternate = GPIO_AF1_TIM2;
752     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
753 
754   /* USER CODE BEGIN TIM2_MspPostInit 1 */
755 
756   /* USER CODE END TIM2_MspPostInit 1 */
757   }
758   else if(htim->Instance==TIM4)
759   {
760   /* USER CODE BEGIN TIM4_MspPostInit 0 */
761 
762   /* USER CODE END TIM4_MspPostInit 0 */
763 
764     __HAL_RCC_GPIOD_CLK_ENABLE();
765     /**TIM4 GPIO Configuration
766     PD12     ------> TIM4_CH1
767     PD13     ------> TIM4_CH2
768     PD14     ------> TIM4_CH3
769     PD15     ------> TIM4_CH4
770     */
771     GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;
772     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
773     GPIO_InitStruct.Pull = GPIO_NOPULL;
774     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
775     GPIO_InitStruct.Alternate = GPIO_AF2_TIM4;
776     HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
777 
778   /* USER CODE BEGIN TIM4_MspPostInit 1 */
779 
780   /* USER CODE END TIM4_MspPostInit 1 */
781   }
782 
783 }
784 /**
785 * @brief TIM_PWM MSP De-Initialization
786 * This function freeze the hardware resources used in this example
787 * @param htim_pwm: TIM_PWM handle pointer
788 * @retval None
789 */
HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef * htim_pwm)790 void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef* htim_pwm)
791 {
792   if(htim_pwm->Instance==TIM2)
793   {
794   /* USER CODE BEGIN TIM2_MspDeInit 0 */
795 
796   /* USER CODE END TIM2_MspDeInit 0 */
797     /* Peripheral clock disable */
798     __HAL_RCC_TIM2_CLK_DISABLE();
799   /* USER CODE BEGIN TIM2_MspDeInit 1 */
800 
801   /* USER CODE END TIM2_MspDeInit 1 */
802   }
803   else if(htim_pwm->Instance==TIM4)
804   {
805   /* USER CODE BEGIN TIM4_MspDeInit 0 */
806 
807   /* USER CODE END TIM4_MspDeInit 0 */
808     /* Peripheral clock disable */
809     __HAL_RCC_TIM4_CLK_DISABLE();
810   /* USER CODE BEGIN TIM4_MspDeInit 1 */
811 
812   /* USER CODE END TIM4_MspDeInit 1 */
813   }
814 
815 }
816 
817 /**
818 * @brief PCD MSP Initialization
819 * This function configures the hardware resources used in this example
820 * @param hpcd: PCD handle pointer
821 * @retval None
822 */
HAL_PCD_MspInit(PCD_HandleTypeDef * hpcd)823 void HAL_PCD_MspInit(PCD_HandleTypeDef* hpcd)
824 {
825   GPIO_InitTypeDef GPIO_InitStruct = {0};
826   if(hpcd->Instance==USB_OTG_FS)
827   {
828   /* USER CODE BEGIN USB_OTG_FS_MspInit 0 */
829 
830   /* USER CODE END USB_OTG_FS_MspInit 0 */
831 
832     __HAL_RCC_GPIOA_CLK_ENABLE();
833     /**USB_OTG_FS GPIO Configuration
834     PA8     ------> USB_OTG_FS_SOF
835     PA9     ------> USB_OTG_FS_VBUS
836     PA10     ------> USB_OTG_FS_ID
837     PA11     ------> USB_OTG_FS_DM
838     PA12     ------> USB_OTG_FS_DP
839     */
840     GPIO_InitStruct.Pin = USB_SOF_Pin|USB_ID_Pin|USB_DM_Pin|USB_DP_Pin;
841     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
842     GPIO_InitStruct.Pull = GPIO_NOPULL;
843     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
844     GPIO_InitStruct.Alternate = GPIO_AF10_OTG_FS;
845     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
846 
847     GPIO_InitStruct.Pin = USB_VBUS_Pin;
848     GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
849     GPIO_InitStruct.Pull = GPIO_NOPULL;
850     HAL_GPIO_Init(USB_VBUS_GPIO_Port, &GPIO_InitStruct);
851 
852     /* Peripheral clock enable */
853     __HAL_RCC_USB_OTG_FS_CLK_ENABLE();
854 
855     /* Enable VDDUSB */
856     if(__HAL_RCC_PWR_IS_CLK_DISABLED())
857     {
858       __HAL_RCC_PWR_CLK_ENABLE();
859       HAL_PWREx_EnableVddUSB();
860       __HAL_RCC_PWR_CLK_DISABLE();
861     }
862     else
863     {
864       HAL_PWREx_EnableVddUSB();
865     }
866     /* USB_OTG_FS interrupt Init */
867     HAL_NVIC_SetPriority(OTG_FS_IRQn, 0, 0);
868     HAL_NVIC_EnableIRQ(OTG_FS_IRQn);
869   /* USER CODE BEGIN USB_OTG_FS_MspInit 1 */
870 
871   /* USER CODE END USB_OTG_FS_MspInit 1 */
872 
873   }
874 
875 }
876 
877 /**
878 * @brief PCD MSP De-Initialization
879 * This function freeze the hardware resources used in this example
880 * @param hpcd: PCD handle pointer
881 * @retval None
882 */
HAL_PCD_MspDeInit(PCD_HandleTypeDef * hpcd)883 void HAL_PCD_MspDeInit(PCD_HandleTypeDef* hpcd)
884 {
885   if(hpcd->Instance==USB_OTG_FS)
886   {
887   /* USER CODE BEGIN USB_OTG_FS_MspDeInit 0 */
888 
889   /* USER CODE END USB_OTG_FS_MspDeInit 0 */
890     /* Peripheral clock disable */
891     __HAL_RCC_USB_OTG_FS_CLK_DISABLE();
892 
893     /**USB_OTG_FS GPIO Configuration
894     PA8     ------> USB_OTG_FS_SOF
895     PA9     ------> USB_OTG_FS_VBUS
896     PA10     ------> USB_OTG_FS_ID
897     PA11     ------> USB_OTG_FS_DM
898     PA12     ------> USB_OTG_FS_DP
899     */
900     HAL_GPIO_DeInit(GPIOA, USB_SOF_Pin|USB_VBUS_Pin|USB_ID_Pin|USB_DM_Pin
901                           |USB_DP_Pin);
902 
903     /* Disable VDDUSB */
904     if(__HAL_RCC_PWR_IS_CLK_DISABLED())
905     {
906       __HAL_RCC_PWR_CLK_ENABLE();
907       HAL_PWREx_DisableVddUSB();
908       __HAL_RCC_PWR_CLK_DISABLE();
909     }
910     else
911     {
912       HAL_PWREx_DisableVddUSB();
913     }
914 
915     /* USB_OTG_FS interrupt DeInit */
916     HAL_NVIC_DisableIRQ(OTG_FS_IRQn);
917   /* USER CODE BEGIN USB_OTG_FS_MspDeInit 1 */
918 
919   /* USER CODE END USB_OTG_FS_MspDeInit 1 */
920   }
921 
922 }
923 
924 static uint32_t SAI1_client =0;
925 
HAL_SAI_MspInit(SAI_HandleTypeDef * hsai)926 void HAL_SAI_MspInit(SAI_HandleTypeDef* hsai)
927 {
928 
929   GPIO_InitTypeDef GPIO_InitStruct;
930 /* SAI1 */
931     if(hsai->Instance==SAI1_Block_A)
932     {
933     /* Peripheral clock enable */
934     if (SAI1_client == 0)
935     {
936        __HAL_RCC_SAI1_CLK_ENABLE();
937     }
938     SAI1_client ++;
939 
940     /**SAI1_A_Block_A GPIO Configuration
941     PE4     ------> SAI1_FS_A
942     PE5     ------> SAI1_SCK_A
943     PE6     ------> SAI1_SD_A
944     */
945     GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6;
946     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
947     GPIO_InitStruct.Pull = GPIO_NOPULL;
948     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
949     GPIO_InitStruct.Alternate = GPIO_AF13_SAI1;
950     HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
951 
952     }
953 }
954 
HAL_SAI_MspDeInit(SAI_HandleTypeDef * hsai)955 void HAL_SAI_MspDeInit(SAI_HandleTypeDef* hsai)
956 {
957 /* SAI1 */
958     if(hsai->Instance==SAI1_Block_A)
959     {
960     SAI1_client --;
961     if (SAI1_client == 0)
962       {
963       /* Peripheral clock disable */
964        __HAL_RCC_SAI1_CLK_DISABLE();
965       }
966 
967     /**SAI1_A_Block_A GPIO Configuration
968     PE4     ------> SAI1_FS_A
969     PE5     ------> SAI1_SCK_A
970     PE6     ------> SAI1_SD_A
971     */
972     HAL_GPIO_DeInit(GPIOE, GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6);
973 
974     }
975 }
976 
977 /* USER CODE BEGIN 1 */
978 
979 /* USER CODE END 1 */
980