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   ** This notice applies to any and all portions of this file
9   * that are not between comment pairs USER CODE BEGIN and
10   * USER CODE END. Other portions of this file, whether
11   * inserted by the user or by software development tools
12   * are owned by their respective copyright owners.
13   *
14   * COPYRIGHT(c) 2018 STMicroelectronics
15   *
16   * Redistribution and use in source and binary forms, with or without modification,
17   * are permitted provided that the following conditions are met:
18   *   1. Redistributions of source code must retain the above copyright notice,
19   *      this list of conditions and the following disclaimer.
20   *   2. Redistributions in binary form must reproduce the above copyright notice,
21   *      this list of conditions and the following disclaimer in the documentation
22   *      and/or other materials provided with the distribution.
23   *   3. Neither the name of STMicroelectronics nor the names of its contributors
24   *      may be used to endorse or promote products derived from this software
25   *      without specific prior written permission.
26   *
27   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
28   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
29   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
30   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
31   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
32   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
33   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
34   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
35   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
36   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37   *
38   ******************************************************************************
39   */
40 /* USER CODE END Header */
41 
42 /* Includes ------------------------------------------------------------------*/
43 #include "main.h"
44 /* USER CODE BEGIN Includes */
45 #include <drv_common.h>
46 /* USER CODE END Includes */
47 
48 /* Private typedef -----------------------------------------------------------*/
49 /* USER CODE BEGIN TD */
50 
51 /* USER CODE END TD */
52 
53 /* Private define ------------------------------------------------------------*/
54 /* USER CODE BEGIN Define */
55 
56 /* USER CODE END Define */
57 
58 /* Private macro -------------------------------------------------------------*/
59 /* USER CODE BEGIN Macro */
60 
61 /* USER CODE END Macro */
62 
63 /* Private variables ---------------------------------------------------------*/
64 /* USER CODE BEGIN PV */
65 
66 /* USER CODE END PV */
67 
68 /* Private function prototypes -----------------------------------------------*/
69 /* USER CODE BEGIN PFP */
70 
71 /* USER CODE END PFP */
72 
73 /* External functions --------------------------------------------------------*/
74 /* USER CODE BEGIN ExternalFunctions */
75 
76 /* USER CODE END ExternalFunctions */
77 
78 /* USER CODE BEGIN 0 */
79 
80 /* USER CODE END 0 */
81 
82 void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
83                                                             /**
84   * Initializes the Global MSP.
85   */
HAL_MspInit(void)86 void HAL_MspInit(void)
87 {
88   /* USER CODE BEGIN MspInit 0 */
89 
90   /* USER CODE END MspInit 0 */
91 
92   __HAL_RCC_SYSCFG_CLK_ENABLE();
93   __HAL_RCC_PWR_CLK_ENABLE();
94 
95   /* System interrupt init*/
96 
97   /* USER CODE BEGIN MspInit 1 */
98 
99   /* USER CODE END MspInit 1 */
100 }
101 
102 /**
103 * @brief ADC MSP Initialization
104 * This function configures the hardware resources used in this example
105 * @param hadc: ADC handle pointer
106 * @retval None
107 */
HAL_ADC_MspInit(ADC_HandleTypeDef * hadc)108 void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
109 {
110   GPIO_InitTypeDef GPIO_InitStruct = {0};
111   if(hadc->Instance==ADC1)
112   {
113   /* USER CODE BEGIN ADC1_MspInit 0 */
114 
115   /* USER CODE END ADC1_MspInit 0 */
116     /* Peripheral clock enable */
117     __HAL_RCC_ADC_CLK_ENABLE();
118 
119     __HAL_RCC_GPIOC_CLK_ENABLE();
120     /**ADC1 GPIO Configuration
121     PC2     ------> ADC1_IN3
122     PC4     ------> ADC1_IN13
123     */
124     GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_4;
125     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG_ADC_CONTROL;
126     GPIO_InitStruct.Pull = GPIO_NOPULL;
127     HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
128 
129   /* USER CODE BEGIN ADC1_MspInit 1 */
130 
131   /* USER CODE END ADC1_MspInit 1 */
132   }
133 
134 }
135 
136 /**
137 * @brief ADC MSP De-Initialization
138 * This function freeze the hardware resources used in this example
139 * @param hadc: ADC handle pointer
140 * @retval None
141 */
HAL_ADC_MspDeInit(ADC_HandleTypeDef * hadc)142 void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc)
143 {
144   if(hadc->Instance==ADC1)
145   {
146   /* USER CODE BEGIN ADC1_MspDeInit 0 */
147 
148   /* USER CODE END ADC1_MspDeInit 0 */
149     /* Peripheral clock disable */
150     __HAL_RCC_ADC_CLK_DISABLE();
151 
152     /**ADC1 GPIO Configuration
153     PC2     ------> ADC1_IN3
154     PC4     ------> ADC1_IN13
155     */
156     HAL_GPIO_DeInit(GPIOC, GPIO_PIN_2|GPIO_PIN_4);
157 
158   /* USER CODE BEGIN ADC1_MspDeInit 1 */
159 
160   /* USER CODE END ADC1_MspDeInit 1 */
161   }
162 
163 }
164 
165 /**
166 * @brief DAC MSP Initialization
167 * This function configures the hardware resources used in this example
168 * @param hdac: DAC handle pointer
169 * @retval None
170 */
HAL_DAC_MspInit(DAC_HandleTypeDef * hdac)171 void HAL_DAC_MspInit(DAC_HandleTypeDef* hdac)
172 {
173   GPIO_InitTypeDef GPIO_InitStruct = {0};
174   if(hdac->Instance==DAC1)
175   {
176   /* USER CODE BEGIN DAC1_MspInit 0 */
177 
178   /* USER CODE END DAC1_MspInit 0 */
179     /* Peripheral clock enable */
180     __HAL_RCC_DAC1_CLK_ENABLE();
181 
182     __HAL_RCC_GPIOA_CLK_ENABLE();
183     /**DAC1 GPIO Configuration
184     PA4     ------> DAC1_OUT1
185     */
186     GPIO_InitStruct.Pin = GPIO_PIN_4;
187     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
188     GPIO_InitStruct.Pull = GPIO_NOPULL;
189     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
190 
191   /* USER CODE BEGIN DAC1_MspInit 1 */
192 
193   /* USER CODE END DAC1_MspInit 1 */
194   }
195 
196 }
197 
198 /**
199 * @brief DAC MSP De-Initialization
200 * This function freeze the hardware resources used in this example
201 * @param hdac: DAC handle pointer
202 * @retval None
203 */
HAL_DAC_MspDeInit(DAC_HandleTypeDef * hdac)204 void HAL_DAC_MspDeInit(DAC_HandleTypeDef* hdac)
205 {
206   if(hdac->Instance==DAC1)
207   {
208   /* USER CODE BEGIN DAC1_MspDeInit 0 */
209 
210   /* USER CODE END DAC1_MspDeInit 0 */
211     /* Peripheral clock disable */
212     __HAL_RCC_DAC1_CLK_DISABLE();
213 
214     /**DAC1 GPIO Configuration
215     PA4     ------> DAC1_OUT1
216     */
217     HAL_GPIO_DeInit(GPIOA, GPIO_PIN_4);
218 
219   /* USER CODE BEGIN DAC1_MspDeInit 1 */
220 
221   /* USER CODE END DAC1_MspDeInit 1 */
222   }
223 
224 }
225 
226 /**
227 * @brief LPTIM MSP Initialization
228 * This function configures the hardware resources used in this example
229 * @param hlptim: LPTIM handle pointer
230 * @retval None
231 */
HAL_LPTIM_MspInit(LPTIM_HandleTypeDef * hlptim)232 void HAL_LPTIM_MspInit(LPTIM_HandleTypeDef* hlptim)
233 {
234   RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
235   if(hlptim->Instance==LPTIM1)
236   {
237   /* USER CODE BEGIN LPTIM1_MspInit 0 */
238 
239   /* USER CODE END LPTIM1_MspInit 0 */
240 
241   /** Initializes the peripherals clock
242   */
243     PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_LPTIM1;
244     PeriphClkInit.Lptim1ClockSelection = RCC_LPTIM1CLKSOURCE_PCLK;
245     if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
246     {
247       Error_Handler();
248     }
249 
250     /* Peripheral clock enable */
251     __HAL_RCC_LPTIM1_CLK_ENABLE();
252   /* USER CODE BEGIN LPTIM1_MspInit 1 */
253 
254   /* USER CODE END LPTIM1_MspInit 1 */
255   }
256 
257 }
258 
259 /**
260 * @brief LPTIM MSP De-Initialization
261 * This function freeze the hardware resources used in this example
262 * @param hlptim: LPTIM handle pointer
263 * @retval None
264 */
HAL_LPTIM_MspDeInit(LPTIM_HandleTypeDef * hlptim)265 void HAL_LPTIM_MspDeInit(LPTIM_HandleTypeDef* hlptim)
266 {
267   if(hlptim->Instance==LPTIM1)
268   {
269   /* USER CODE BEGIN LPTIM1_MspDeInit 0 */
270 
271   /* USER CODE END LPTIM1_MspDeInit 0 */
272     /* Peripheral clock disable */
273     __HAL_RCC_LPTIM1_CLK_DISABLE();
274   /* USER CODE BEGIN LPTIM1_MspDeInit 1 */
275 
276   /* USER CODE END LPTIM1_MspDeInit 1 */
277   }
278 
279 }
280 
281 /**
282 * @brief QSPI MSP Initialization
283 * This function configures the hardware resources used in this example
284 * @param hqspi: QSPI handle pointer
285 * @retval None
286 */
HAL_QSPI_MspInit(QSPI_HandleTypeDef * hqspi)287 void HAL_QSPI_MspInit(QSPI_HandleTypeDef* hqspi)
288 {
289   GPIO_InitTypeDef GPIO_InitStruct = {0};
290   if(hqspi->Instance==QUADSPI)
291   {
292   /* USER CODE BEGIN QUADSPI_MspInit 0 */
293 
294   /* USER CODE END QUADSPI_MspInit 0 */
295     /* Peripheral clock enable */
296     __HAL_RCC_QSPI_CLK_ENABLE();
297 
298     __HAL_RCC_GPIOE_CLK_ENABLE();
299     /**QUADSPI GPIO Configuration
300     PE10     ------> QUADSPI_CLK
301     PE11     ------> QUADSPI_NCS
302     PE12     ------> QUADSPI_BK1_IO0
303     PE13     ------> QUADSPI_BK1_IO1
304     PE14     ------> QUADSPI_BK1_IO2
305     PE15     ------> QUADSPI_BK1_IO3
306     */
307     GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13
308                           |GPIO_PIN_14|GPIO_PIN_15;
309     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
310     GPIO_InitStruct.Pull = GPIO_NOPULL;
311     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
312     GPIO_InitStruct.Alternate = GPIO_AF10_QUADSPI;
313     HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
314 
315   /* USER CODE BEGIN QUADSPI_MspInit 1 */
316 
317   /* USER CODE END QUADSPI_MspInit 1 */
318   }
319 
320 }
321 
322 /**
323 * @brief QSPI MSP De-Initialization
324 * This function freeze the hardware resources used in this example
325 * @param hqspi: QSPI handle pointer
326 * @retval None
327 */
HAL_QSPI_MspDeInit(QSPI_HandleTypeDef * hqspi)328 void HAL_QSPI_MspDeInit(QSPI_HandleTypeDef* hqspi)
329 {
330   if(hqspi->Instance==QUADSPI)
331   {
332   /* USER CODE BEGIN QUADSPI_MspDeInit 0 */
333 
334   /* USER CODE END QUADSPI_MspDeInit 0 */
335     /* Peripheral clock disable */
336     __HAL_RCC_QSPI_CLK_DISABLE();
337 
338     /**QUADSPI GPIO Configuration
339     PE10     ------> QUADSPI_CLK
340     PE11     ------> QUADSPI_NCS
341     PE12     ------> QUADSPI_BK1_IO0
342     PE13     ------> QUADSPI_BK1_IO1
343     PE14     ------> QUADSPI_BK1_IO2
344     PE15     ------> QUADSPI_BK1_IO3
345     */
346     HAL_GPIO_DeInit(GPIOE, GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13
347                           |GPIO_PIN_14|GPIO_PIN_15);
348 
349   /* USER CODE BEGIN QUADSPI_MspDeInit 1 */
350 
351   /* USER CODE END QUADSPI_MspDeInit 1 */
352   }
353 
354 }
355 
356 /**
357 * @brief RTC MSP Initialization
358 * This function configures the hardware resources used in this example
359 * @param hrtc: RTC handle pointer
360 * @retval None
361 */
HAL_RTC_MspInit(RTC_HandleTypeDef * hrtc)362 void HAL_RTC_MspInit(RTC_HandleTypeDef* hrtc)
363 {
364   RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
365   if(hrtc->Instance==RTC)
366   {
367   /* USER CODE BEGIN RTC_MspInit 0 */
368 
369   /* USER CODE END RTC_MspInit 0 */
370 
371   /** Initializes the peripherals clock
372   */
373     PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_RTC;
374     PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
375     if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
376     {
377       Error_Handler();
378     }
379 
380     /* Peripheral clock enable */
381     __HAL_RCC_RTC_ENABLE();
382   /* USER CODE BEGIN RTC_MspInit 1 */
383 
384   /* USER CODE END RTC_MspInit 1 */
385   }
386 
387 }
388 
389 /**
390 * @brief RTC MSP De-Initialization
391 * This function freeze the hardware resources used in this example
392 * @param hrtc: RTC handle pointer
393 * @retval None
394 */
HAL_RTC_MspDeInit(RTC_HandleTypeDef * hrtc)395 void HAL_RTC_MspDeInit(RTC_HandleTypeDef* hrtc)
396 {
397   if(hrtc->Instance==RTC)
398   {
399   /* USER CODE BEGIN RTC_MspDeInit 0 */
400 
401   /* USER CODE END RTC_MspDeInit 0 */
402     /* Peripheral clock disable */
403     __HAL_RCC_RTC_DISABLE();
404   /* USER CODE BEGIN RTC_MspDeInit 1 */
405 
406   /* USER CODE END RTC_MspDeInit 1 */
407   }
408 
409 }
410 
411 /**
412 * @brief SD MSP Initialization
413 * This function configures the hardware resources used in this example
414 * @param hsd: SD handle pointer
415 * @retval None
416 */
HAL_SD_MspInit(SD_HandleTypeDef * hsd)417 void HAL_SD_MspInit(SD_HandleTypeDef* hsd)
418 {
419   GPIO_InitTypeDef GPIO_InitStruct = {0};
420   if(hsd->Instance==SDMMC1)
421   {
422   /* USER CODE BEGIN SDMMC1_MspInit 0 */
423 
424   /* USER CODE END SDMMC1_MspInit 0 */
425     /* Peripheral clock enable */
426     __HAL_RCC_SDMMC1_CLK_ENABLE();
427 
428     __HAL_RCC_GPIOC_CLK_ENABLE();
429     __HAL_RCC_GPIOD_CLK_ENABLE();
430     /**SDMMC1 GPIO Configuration
431     PC8     ------> SDMMC1_D0
432     PC9     ------> SDMMC1_D1
433     PC10     ------> SDMMC1_D2
434     PC11     ------> SDMMC1_D3
435     PC12     ------> SDMMC1_CK
436     PD2     ------> SDMMC1_CMD
437     */
438     GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11
439                           |GPIO_PIN_12;
440     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
441     GPIO_InitStruct.Pull = GPIO_NOPULL;
442     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
443     GPIO_InitStruct.Alternate = GPIO_AF12_SDMMC1;
444     HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
445 
446     GPIO_InitStruct.Pin = GPIO_PIN_2;
447     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
448     GPIO_InitStruct.Pull = GPIO_NOPULL;
449     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
450     GPIO_InitStruct.Alternate = GPIO_AF12_SDMMC1;
451     HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
452 
453   /* USER CODE BEGIN SDMMC1_MspInit 1 */
454 
455   /* USER CODE END SDMMC1_MspInit 1 */
456   }
457 
458 }
459 
460 /**
461 * @brief SD MSP De-Initialization
462 * This function freeze the hardware resources used in this example
463 * @param hsd: SD handle pointer
464 * @retval None
465 */
HAL_SD_MspDeInit(SD_HandleTypeDef * hsd)466 void HAL_SD_MspDeInit(SD_HandleTypeDef* hsd)
467 {
468   if(hsd->Instance==SDMMC1)
469   {
470   /* USER CODE BEGIN SDMMC1_MspDeInit 0 */
471 
472   /* USER CODE END SDMMC1_MspDeInit 0 */
473     /* Peripheral clock disable */
474     __HAL_RCC_SDMMC1_CLK_DISABLE();
475 
476     /**SDMMC1 GPIO Configuration
477     PC8     ------> SDMMC1_D0
478     PC9     ------> SDMMC1_D1
479     PC10     ------> SDMMC1_D2
480     PC11     ------> SDMMC1_D3
481     PC12     ------> SDMMC1_CK
482     PD2     ------> SDMMC1_CMD
483     */
484     HAL_GPIO_DeInit(GPIOC, GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11
485                           |GPIO_PIN_12);
486 
487     HAL_GPIO_DeInit(GPIOD, GPIO_PIN_2);
488 
489   /* USER CODE BEGIN SDMMC1_MspDeInit 1 */
490 
491   /* USER CODE END SDMMC1_MspDeInit 1 */
492   }
493 
494 }
495 
496 /**
497 * @brief SPI MSP Initialization
498 * This function configures the hardware resources used in this example
499 * @param hspi: SPI handle pointer
500 * @retval None
501 */
HAL_SPI_MspInit(SPI_HandleTypeDef * hspi)502 void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
503 {
504   GPIO_InitTypeDef GPIO_InitStruct = {0};
505   if(hspi->Instance==SPI1)
506   {
507   /* USER CODE BEGIN SPI1_MspInit 0 */
508 
509   /* USER CODE END SPI1_MspInit 0 */
510     /* Peripheral clock enable */
511     __HAL_RCC_SPI1_CLK_ENABLE();
512 
513     __HAL_RCC_GPIOA_CLK_ENABLE();
514     /**SPI1 GPIO Configuration
515     PA5     ------> SPI1_SCK
516     PA6     ------> SPI1_MISO
517     PA7     ------> SPI1_MOSI
518     */
519     GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7;
520     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
521     GPIO_InitStruct.Pull = GPIO_NOPULL;
522     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
523     GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;
524     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
525 
526   /* USER CODE BEGIN SPI1_MspInit 1 */
527 
528   /* USER CODE END SPI1_MspInit 1 */
529   }
530   else if(hspi->Instance==SPI2)
531   {
532   /* USER CODE BEGIN SPI2_MspInit 0 */
533 
534   /* USER CODE END SPI2_MspInit 0 */
535     /* Peripheral clock enable */
536     __HAL_RCC_SPI2_CLK_ENABLE();
537 
538     __HAL_RCC_GPIOB_CLK_ENABLE();
539     /**SPI2 GPIO Configuration
540     PB13     ------> SPI2_SCK
541     PB14     ------> SPI2_MISO
542     PB15     ------> SPI2_MOSI
543     */
544     GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;
545     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
546     GPIO_InitStruct.Pull = GPIO_NOPULL;
547     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
548     GPIO_InitStruct.Alternate = GPIO_AF5_SPI2;
549     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
550 
551   /* USER CODE BEGIN SPI2_MspInit 1 */
552 
553   /* USER CODE END SPI2_MspInit 1 */
554   }
555   else if(hspi->Instance==SPI3)
556   {
557   /* USER CODE BEGIN SPI3_MspInit 0 */
558 
559   /* USER CODE END SPI3_MspInit 0 */
560     /* Peripheral clock enable */
561     __HAL_RCC_SPI3_CLK_ENABLE();
562 
563     __HAL_RCC_GPIOB_CLK_ENABLE();
564     /**SPI3 GPIO Configuration
565     PB3 (JTDO-TRACESWO)     ------> SPI3_SCK
566     PB5     ------> SPI3_MOSI
567     */
568     GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_PIN_5;
569     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
570     GPIO_InitStruct.Pull = GPIO_NOPULL;
571     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
572     GPIO_InitStruct.Alternate = GPIO_AF6_SPI3;
573     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
574 
575   /* USER CODE BEGIN SPI3_MspInit 1 */
576 
577   /* USER CODE END SPI3_MspInit 1 */
578   }
579 
580 }
581 
582 /**
583 * @brief SPI MSP De-Initialization
584 * This function freeze the hardware resources used in this example
585 * @param hspi: SPI handle pointer
586 * @retval None
587 */
HAL_SPI_MspDeInit(SPI_HandleTypeDef * hspi)588 void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi)
589 {
590   if(hspi->Instance==SPI1)
591   {
592   /* USER CODE BEGIN SPI1_MspDeInit 0 */
593 
594   /* USER CODE END SPI1_MspDeInit 0 */
595     /* Peripheral clock disable */
596     __HAL_RCC_SPI1_CLK_DISABLE();
597 
598     /**SPI1 GPIO Configuration
599     PA5     ------> SPI1_SCK
600     PA6     ------> SPI1_MISO
601     PA7     ------> SPI1_MOSI
602     */
603     HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);
604 
605   /* USER CODE BEGIN SPI1_MspDeInit 1 */
606 
607   /* USER CODE END SPI1_MspDeInit 1 */
608   }
609   else if(hspi->Instance==SPI2)
610   {
611   /* USER CODE BEGIN SPI2_MspDeInit 0 */
612 
613   /* USER CODE END SPI2_MspDeInit 0 */
614     /* Peripheral clock disable */
615     __HAL_RCC_SPI2_CLK_DISABLE();
616 
617     /**SPI2 GPIO Configuration
618     PB13     ------> SPI2_SCK
619     PB14     ------> SPI2_MISO
620     PB15     ------> SPI2_MOSI
621     */
622     HAL_GPIO_DeInit(GPIOB, GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15);
623 
624   /* USER CODE BEGIN SPI2_MspDeInit 1 */
625 
626   /* USER CODE END SPI2_MspDeInit 1 */
627   }
628   else if(hspi->Instance==SPI3)
629   {
630   /* USER CODE BEGIN SPI3_MspDeInit 0 */
631 
632   /* USER CODE END SPI3_MspDeInit 0 */
633     /* Peripheral clock disable */
634     __HAL_RCC_SPI3_CLK_DISABLE();
635 
636     /**SPI3 GPIO Configuration
637     PB3 (JTDO-TRACESWO)     ------> SPI3_SCK
638     PB5     ------> SPI3_MOSI
639     */
640     HAL_GPIO_DeInit(GPIOB, GPIO_PIN_3|GPIO_PIN_5);
641 
642   /* USER CODE BEGIN SPI3_MspDeInit 1 */
643 
644   /* USER CODE END SPI3_MspDeInit 1 */
645   }
646 
647 }
648 
649 /**
650 * @brief TIM_Base MSP Initialization
651 * This function configures the hardware resources used in this example
652 * @param htim_base: TIM_Base handle pointer
653 * @retval None
654 */
HAL_TIM_Base_MspInit(TIM_HandleTypeDef * htim_base)655 void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
656 {
657   if(htim_base->Instance==TIM1)
658   {
659   /* USER CODE BEGIN TIM1_MspInit 0 */
660 
661   /* USER CODE END TIM1_MspInit 0 */
662     /* Peripheral clock enable */
663     __HAL_RCC_TIM1_CLK_ENABLE();
664   /* USER CODE BEGIN TIM1_MspInit 1 */
665 
666   /* USER CODE END TIM1_MspInit 1 */
667   }
668   else if(htim_base->Instance==TIM2)
669   {
670   /* USER CODE BEGIN TIM2_MspInit 0 */
671 
672   /* USER CODE END TIM2_MspInit 0 */
673     /* Peripheral clock enable */
674     __HAL_RCC_TIM2_CLK_ENABLE();
675   /* USER CODE BEGIN TIM2_MspInit 1 */
676 
677   /* USER CODE END TIM2_MspInit 1 */
678   }
679   else if(htim_base->Instance==TIM4)
680   {
681   /* USER CODE BEGIN TIM4_MspInit 0 */
682 
683   /* USER CODE END TIM4_MspInit 0 */
684     /* Peripheral clock enable */
685     __HAL_RCC_TIM4_CLK_ENABLE();
686   /* USER CODE BEGIN TIM4_MspInit 1 */
687 
688   /* USER CODE END TIM4_MspInit 1 */
689   }
690   else if(htim_base->Instance==TIM7)
691   {
692   /* USER CODE BEGIN TIM7_MspInit 0 */
693 
694   /* USER CODE END TIM7_MspInit 0 */
695     /* Peripheral clock enable */
696     __HAL_RCC_TIM7_CLK_ENABLE();
697   /* USER CODE BEGIN TIM7_MspInit 1 */
698 
699   /* USER CODE END TIM7_MspInit 1 */
700   }
701   else if(htim_base->Instance==TIM15)
702   {
703   /* USER CODE BEGIN TIM15_MspInit 0 */
704 
705   /* USER CODE END TIM15_MspInit 0 */
706     /* Peripheral clock enable */
707     __HAL_RCC_TIM15_CLK_ENABLE();
708   /* USER CODE BEGIN TIM15_MspInit 1 */
709 
710   /* USER CODE END TIM15_MspInit 1 */
711   }
712   else if(htim_base->Instance==TIM16)
713   {
714   /* USER CODE BEGIN TIM16_MspInit 0 */
715 
716   /* USER CODE END TIM16_MspInit 0 */
717     /* Peripheral clock enable */
718     __HAL_RCC_TIM16_CLK_ENABLE();
719   /* USER CODE BEGIN TIM16_MspInit 1 */
720 
721   /* USER CODE END TIM16_MspInit 1 */
722   }
723   else if(htim_base->Instance==TIM17)
724   {
725   /* USER CODE BEGIN TIM17_MspInit 0 */
726 
727   /* USER CODE END TIM17_MspInit 0 */
728     /* Peripheral clock enable */
729     __HAL_RCC_TIM17_CLK_ENABLE();
730   /* USER CODE BEGIN TIM17_MspInit 1 */
731 
732   /* USER CODE END TIM17_MspInit 1 */
733   }
734 
735 }
736 
HAL_TIM_MspPostInit(TIM_HandleTypeDef * htim)737 void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim)
738 {
739   GPIO_InitTypeDef GPIO_InitStruct = {0};
740   if(htim->Instance==TIM1)
741   {
742   /* USER CODE BEGIN TIM1_MspPostInit 0 */
743 
744   /* USER CODE END TIM1_MspPostInit 0 */
745     __HAL_RCC_GPIOE_CLK_ENABLE();
746     /**TIM1 GPIO Configuration
747     PE9     ------> TIM1_CH1
748     */
749     GPIO_InitStruct.Pin = GPIO_PIN_9;
750     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
751     GPIO_InitStruct.Pull = GPIO_NOPULL;
752     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
753     GPIO_InitStruct.Alternate = GPIO_AF1_TIM1;
754     HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
755 
756   /* USER CODE BEGIN TIM1_MspPostInit 1 */
757 
758   /* USER CODE END TIM1_MspPostInit 1 */
759   }
760   else if(htim->Instance==TIM2)
761   {
762   /* USER CODE BEGIN TIM2_MspPostInit 0 */
763 
764   /* USER CODE END TIM2_MspPostInit 0 */
765 
766     __HAL_RCC_GPIOB_CLK_ENABLE();
767     /**TIM2 GPIO Configuration
768     PB10     ------> TIM2_CH3
769     PB11     ------> TIM2_CH4
770     */
771     GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_11;
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_AF1_TIM2;
776     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
777 
778   /* USER CODE BEGIN TIM2_MspPostInit 1 */
779 
780   /* USER CODE END TIM2_MspPostInit 1 */
781   }
782   else if(htim->Instance==TIM4)
783   {
784   /* USER CODE BEGIN TIM4_MspPostInit 0 */
785 
786   /* USER CODE END TIM4_MspPostInit 0 */
787 
788     __HAL_RCC_GPIOD_CLK_ENABLE();
789     __HAL_RCC_GPIOB_CLK_ENABLE();
790     /**TIM4 GPIO Configuration
791     PD12     ------> TIM4_CH1
792     PD15     ------> TIM4_CH4
793     PB7     ------> TIM4_CH2
794     PB8     ------> TIM4_CH3
795     */
796     GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_15;
797     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
798     GPIO_InitStruct.Pull = GPIO_NOPULL;
799     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
800     GPIO_InitStruct.Alternate = GPIO_AF2_TIM4;
801     HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
802 
803     GPIO_InitStruct.Pin = GPIO_PIN_7|GPIO_PIN_8;
804     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
805     GPIO_InitStruct.Pull = GPIO_NOPULL;
806     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
807     GPIO_InitStruct.Alternate = GPIO_AF2_TIM4;
808     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
809 
810   /* USER CODE BEGIN TIM4_MspPostInit 1 */
811 
812   /* USER CODE END TIM4_MspPostInit 1 */
813   }
814 
815 }
816 /**
817 * @brief TIM_Base MSP De-Initialization
818 * This function freeze the hardware resources used in this example
819 * @param htim_base: TIM_Base handle pointer
820 * @retval None
821 */
HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef * htim_base)822 void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)
823 {
824   if(htim_base->Instance==TIM1)
825   {
826   /* USER CODE BEGIN TIM1_MspDeInit 0 */
827 
828   /* USER CODE END TIM1_MspDeInit 0 */
829     /* Peripheral clock disable */
830     __HAL_RCC_TIM1_CLK_DISABLE();
831   /* USER CODE BEGIN TIM1_MspDeInit 1 */
832 
833   /* USER CODE END TIM1_MspDeInit 1 */
834   }
835   else if(htim_base->Instance==TIM2)
836   {
837   /* USER CODE BEGIN TIM2_MspDeInit 0 */
838 
839   /* USER CODE END TIM2_MspDeInit 0 */
840     /* Peripheral clock disable */
841     __HAL_RCC_TIM2_CLK_DISABLE();
842   /* USER CODE BEGIN TIM2_MspDeInit 1 */
843 
844   /* USER CODE END TIM2_MspDeInit 1 */
845   }
846   else if(htim_base->Instance==TIM4)
847   {
848   /* USER CODE BEGIN TIM4_MspDeInit 0 */
849 
850   /* USER CODE END TIM4_MspDeInit 0 */
851     /* Peripheral clock disable */
852     __HAL_RCC_TIM4_CLK_DISABLE();
853   /* USER CODE BEGIN TIM4_MspDeInit 1 */
854 
855   /* USER CODE END TIM4_MspDeInit 1 */
856   }
857   else if(htim_base->Instance==TIM7)
858   {
859   /* USER CODE BEGIN TIM7_MspDeInit 0 */
860 
861   /* USER CODE END TIM7_MspDeInit 0 */
862     /* Peripheral clock disable */
863     __HAL_RCC_TIM7_CLK_DISABLE();
864   /* USER CODE BEGIN TIM7_MspDeInit 1 */
865 
866   /* USER CODE END TIM7_MspDeInit 1 */
867   }
868   else if(htim_base->Instance==TIM15)
869   {
870   /* USER CODE BEGIN TIM15_MspDeInit 0 */
871 
872   /* USER CODE END TIM15_MspDeInit 0 */
873     /* Peripheral clock disable */
874     __HAL_RCC_TIM15_CLK_DISABLE();
875   /* USER CODE BEGIN TIM15_MspDeInit 1 */
876 
877   /* USER CODE END TIM15_MspDeInit 1 */
878   }
879   else if(htim_base->Instance==TIM16)
880   {
881   /* USER CODE BEGIN TIM16_MspDeInit 0 */
882 
883   /* USER CODE END TIM16_MspDeInit 0 */
884     /* Peripheral clock disable */
885     __HAL_RCC_TIM16_CLK_DISABLE();
886   /* USER CODE BEGIN TIM16_MspDeInit 1 */
887 
888   /* USER CODE END TIM16_MspDeInit 1 */
889   }
890   else if(htim_base->Instance==TIM17)
891   {
892   /* USER CODE BEGIN TIM17_MspDeInit 0 */
893 
894   /* USER CODE END TIM17_MspDeInit 0 */
895     /* Peripheral clock disable */
896     __HAL_RCC_TIM17_CLK_DISABLE();
897   /* USER CODE BEGIN TIM17_MspDeInit 1 */
898 
899   /* USER CODE END TIM17_MspDeInit 1 */
900   }
901 
902 }
903 
904 /**
905 * @brief UART MSP Initialization
906 * This function configures the hardware resources used in this example
907 * @param huart: UART handle pointer
908 * @retval None
909 */
HAL_UART_MspInit(UART_HandleTypeDef * huart)910 void HAL_UART_MspInit(UART_HandleTypeDef* huart)
911 {
912   GPIO_InitTypeDef GPIO_InitStruct = {0};
913   RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
914   if(huart->Instance==USART1)
915   {
916   /* USER CODE BEGIN USART1_MspInit 0 */
917 
918   /* USER CODE END USART1_MspInit 0 */
919 
920   /** Initializes the peripherals clock
921   */
922     PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1;
923     PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2;
924     if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
925     {
926       Error_Handler();
927     }
928 
929     /* Peripheral clock enable */
930     __HAL_RCC_USART1_CLK_ENABLE();
931 
932     __HAL_RCC_GPIOA_CLK_ENABLE();
933     /**USART1 GPIO Configuration
934     PA9     ------> USART1_TX
935     PA10     ------> USART1_RX
936     */
937     GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;
938     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
939     GPIO_InitStruct.Pull = GPIO_PULLUP;
940     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
941     GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
942     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
943 
944   /* USER CODE BEGIN USART1_MspInit 1 */
945 
946   /* USER CODE END USART1_MspInit 1 */
947   }
948   else if(huart->Instance==USART2)
949   {
950   /* USER CODE BEGIN USART2_MspInit 0 */
951 
952   /* USER CODE END USART2_MspInit 0 */
953 
954   /** Initializes the peripherals clock
955   */
956     PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART2;
957     PeriphClkInit.Usart2ClockSelection = RCC_USART2CLKSOURCE_PCLK1;
958     if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
959     {
960       Error_Handler();
961     }
962 
963     /* Peripheral clock enable */
964     __HAL_RCC_USART2_CLK_ENABLE();
965 
966     __HAL_RCC_GPIOA_CLK_ENABLE();
967     /**USART2 GPIO Configuration
968     PA2     ------> USART2_TX
969     PA3     ------> USART2_RX
970     */
971     GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3;
972     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
973     GPIO_InitStruct.Pull = GPIO_PULLUP;
974     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
975     GPIO_InitStruct.Alternate = GPIO_AF7_USART2;
976     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
977 
978   /* USER CODE BEGIN USART2_MspInit 1 */
979 
980   /* USER CODE END USART2_MspInit 1 */
981   }
982 
983 }
984 
985 /**
986 * @brief UART MSP De-Initialization
987 * This function freeze the hardware resources used in this example
988 * @param huart: UART handle pointer
989 * @retval None
990 */
HAL_UART_MspDeInit(UART_HandleTypeDef * huart)991 void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
992 {
993   if(huart->Instance==USART1)
994   {
995   /* USER CODE BEGIN USART1_MspDeInit 0 */
996 
997   /* USER CODE END USART1_MspDeInit 0 */
998     /* Peripheral clock disable */
999     __HAL_RCC_USART1_CLK_DISABLE();
1000 
1001     /**USART1 GPIO Configuration
1002     PA9     ------> USART1_TX
1003     PA10     ------> USART1_RX
1004     */
1005     HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10);
1006 
1007   /* USER CODE BEGIN USART1_MspDeInit 1 */
1008 
1009   /* USER CODE END USART1_MspDeInit 1 */
1010   }
1011   else if(huart->Instance==USART2)
1012   {
1013   /* USER CODE BEGIN USART2_MspDeInit 0 */
1014 
1015   /* USER CODE END USART2_MspDeInit 0 */
1016     /* Peripheral clock disable */
1017     __HAL_RCC_USART2_CLK_DISABLE();
1018 
1019     /**USART2 GPIO Configuration
1020     PA2     ------> USART2_TX
1021     PA3     ------> USART2_RX
1022     */
1023     HAL_GPIO_DeInit(GPIOA, GPIO_PIN_2|GPIO_PIN_3);
1024 
1025   /* USER CODE BEGIN USART2_MspDeInit 1 */
1026 
1027   /* USER CODE END USART2_MspDeInit 1 */
1028   }
1029 
1030 }
1031 
1032 /**
1033 * @brief PCD MSP Initialization
1034 * This function configures the hardware resources used in this example
1035 * @param hpcd: PCD handle pointer
1036 * @retval None
1037 */
HAL_PCD_MspInit(PCD_HandleTypeDef * hpcd)1038 void HAL_PCD_MspInit(PCD_HandleTypeDef* hpcd)
1039 {
1040   GPIO_InitTypeDef GPIO_InitStruct = {0};
1041   if(hpcd->Instance==USB_OTG_FS)
1042   {
1043   /* USER CODE BEGIN USB_OTG_FS_MspInit 0 */
1044 
1045   /* USER CODE END USB_OTG_FS_MspInit 0 */
1046 
1047     __HAL_RCC_GPIOA_CLK_ENABLE();
1048     /**USB_OTG_FS GPIO Configuration
1049     PA11     ------> USB_OTG_FS_DM
1050     PA12     ------> USB_OTG_FS_DP
1051     */
1052     GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12;
1053     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
1054     GPIO_InitStruct.Pull = GPIO_NOPULL;
1055     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
1056     GPIO_InitStruct.Alternate = GPIO_AF10_OTG_FS;
1057     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
1058 
1059     /* Peripheral clock enable */
1060     __HAL_RCC_USB_OTG_FS_CLK_ENABLE();
1061 
1062     /* Enable VDDUSB */
1063     if(__HAL_RCC_PWR_IS_CLK_DISABLED())
1064     {
1065       __HAL_RCC_PWR_CLK_ENABLE();
1066       HAL_PWREx_EnableVddUSB();
1067       __HAL_RCC_PWR_CLK_DISABLE();
1068     }
1069     else
1070     {
1071       HAL_PWREx_EnableVddUSB();
1072     }
1073     /* USB_OTG_FS interrupt Init */
1074     HAL_NVIC_SetPriority(OTG_FS_IRQn, 0, 0);
1075     HAL_NVIC_EnableIRQ(OTG_FS_IRQn);
1076   /* USER CODE BEGIN USB_OTG_FS_MspInit 1 */
1077 
1078   /* USER CODE END USB_OTG_FS_MspInit 1 */
1079   }
1080 
1081 }
1082 
1083 /**
1084 * @brief PCD MSP De-Initialization
1085 * This function freeze the hardware resources used in this example
1086 * @param hpcd: PCD handle pointer
1087 * @retval None
1088 */
HAL_PCD_MspDeInit(PCD_HandleTypeDef * hpcd)1089 void HAL_PCD_MspDeInit(PCD_HandleTypeDef* hpcd)
1090 {
1091   if(hpcd->Instance==USB_OTG_FS)
1092   {
1093   /* USER CODE BEGIN USB_OTG_FS_MspDeInit 0 */
1094 
1095   /* USER CODE END USB_OTG_FS_MspDeInit 0 */
1096     /* Peripheral clock disable */
1097     __HAL_RCC_USB_OTG_FS_CLK_DISABLE();
1098 
1099     /**USB_OTG_FS GPIO Configuration
1100     PA11     ------> USB_OTG_FS_DM
1101     PA12     ------> USB_OTG_FS_DP
1102     */
1103     HAL_GPIO_DeInit(GPIOA, GPIO_PIN_11|GPIO_PIN_12);
1104 
1105     /* Disable VDDUSB */
1106     if(__HAL_RCC_PWR_IS_CLK_DISABLED())
1107     {
1108       __HAL_RCC_PWR_CLK_ENABLE();
1109       HAL_PWREx_DisableVddUSB();
1110       __HAL_RCC_PWR_CLK_DISABLE();
1111     }
1112     else
1113     {
1114       HAL_PWREx_DisableVddUSB();
1115     }
1116 
1117     /* USB_OTG_FS interrupt DeInit */
1118     HAL_NVIC_DisableIRQ(OTG_FS_IRQn);
1119   /* USER CODE BEGIN USB_OTG_FS_MspDeInit 1 */
1120 
1121   /* USER CODE END USB_OTG_FS_MspDeInit 1 */
1122   }
1123 
1124 }
1125 
1126 static uint32_t SAI1_client =0;
1127 
HAL_SAI_MspInit(SAI_HandleTypeDef * hsai)1128 void HAL_SAI_MspInit(SAI_HandleTypeDef* hsai)
1129 {
1130 
1131   GPIO_InitTypeDef GPIO_InitStruct;
1132 /* SAI1 */
1133     if(hsai->Instance==SAI1_Block_A)
1134     {
1135     /* Peripheral clock enable */
1136     if (SAI1_client == 0)
1137     {
1138        __HAL_RCC_SAI1_CLK_ENABLE();
1139     }
1140     SAI1_client ++;
1141 
1142     /**SAI1_A_Block_A GPIO Configuration
1143     PE2     ------> SAI1_MCLK_A
1144     PE4     ------> SAI1_FS_A
1145     PE5     ------> SAI1_SCK_A
1146     PE6     ------> SAI1_SD_A
1147     */
1148     GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6;
1149     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
1150     GPIO_InitStruct.Pull = GPIO_NOPULL;
1151     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
1152     GPIO_InitStruct.Alternate = GPIO_AF13_SAI1;
1153     HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
1154 
1155     }
1156     if(hsai->Instance==SAI1_Block_B)
1157     {
1158       /* Peripheral clock enable */
1159       if (SAI1_client == 0)
1160       {
1161        __HAL_RCC_SAI1_CLK_ENABLE();
1162       }
1163     SAI1_client ++;
1164 
1165     /**SAI1_B_Block_B GPIO Configuration
1166     PE3     ------> SAI1_SD_B
1167     */
1168     GPIO_InitStruct.Pin = GPIO_PIN_3;
1169     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
1170     GPIO_InitStruct.Pull = GPIO_NOPULL;
1171     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
1172     GPIO_InitStruct.Alternate = GPIO_AF13_SAI1;
1173     HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
1174 
1175     }
1176 }
1177 
HAL_SAI_MspDeInit(SAI_HandleTypeDef * hsai)1178 void HAL_SAI_MspDeInit(SAI_HandleTypeDef* hsai)
1179 {
1180 /* SAI1 */
1181     if(hsai->Instance==SAI1_Block_A)
1182     {
1183     SAI1_client --;
1184     if (SAI1_client == 0)
1185       {
1186       /* Peripheral clock disable */
1187        __HAL_RCC_SAI1_CLK_DISABLE();
1188       }
1189 
1190     /**SAI1_A_Block_A GPIO Configuration
1191     PE2     ------> SAI1_MCLK_A
1192     PE4     ------> SAI1_FS_A
1193     PE5     ------> SAI1_SCK_A
1194     PE6     ------> SAI1_SD_A
1195     */
1196     HAL_GPIO_DeInit(GPIOE, GPIO_PIN_2|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6);
1197 
1198     }
1199     if(hsai->Instance==SAI1_Block_B)
1200     {
1201     SAI1_client --;
1202       if (SAI1_client == 0)
1203       {
1204       /* Peripheral clock disable */
1205       __HAL_RCC_SAI1_CLK_DISABLE();
1206       }
1207 
1208     /**SAI1_B_Block_B GPIO Configuration
1209     PE3     ------> SAI1_SD_B
1210     */
1211     HAL_GPIO_DeInit(GPIOE, GPIO_PIN_3);
1212 
1213     }
1214 }
1215 
1216 /* USER CODE BEGIN 1 */
1217 
1218 /* USER CODE END 1 */
1219