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