1 /* USER CODE BEGIN Header */
2 /**
3   ******************************************************************************
4   * File Name          : stm32f7xx_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   * Initializes the Global MSP.
83   */
HAL_MspInit(void)84 void HAL_MspInit(void)
85 {
86   /* USER CODE BEGIN MspInit 0 */
87 
88   /* USER CODE END MspInit 0 */
89 
90   __HAL_RCC_PWR_CLK_ENABLE();
91   __HAL_RCC_SYSCFG_CLK_ENABLE();
92 
93   /* System interrupt init*/
94 
95   /* USER CODE BEGIN MspInit 1 */
96 
97   /* USER CODE END MspInit 1 */
98 }
99 
100 /**
101 * @brief ETH MSP Initialization
102 * This function configures the hardware resources used in this example
103 * @param heth: ETH handle pointer
104 * @retval None
105 */
HAL_ETH_MspInit(ETH_HandleTypeDef * heth)106 void HAL_ETH_MspInit(ETH_HandleTypeDef* heth)
107 {
108   GPIO_InitTypeDef GPIO_InitStruct = {0};
109   if(heth->Instance==ETH)
110   {
111   /* USER CODE BEGIN ETH_MspInit 0 */
112 
113   /* USER CODE END ETH_MspInit 0 */
114     /* Peripheral clock enable */
115     __HAL_RCC_ETH_CLK_ENABLE();
116 
117     __HAL_RCC_GPIOG_CLK_ENABLE();
118     __HAL_RCC_GPIOC_CLK_ENABLE();
119     __HAL_RCC_GPIOA_CLK_ENABLE();
120     /**ETH GPIO Configuration
121     PG14     ------> ETH_TXD1
122     PG13     ------> ETH_TXD0
123     PG11     ------> ETH_TX_EN
124     PC1     ------> ETH_MDC
125     PA1     ------> ETH_REF_CLK
126     PC4     ------> ETH_RXD0
127     PA2     ------> ETH_MDIO
128     PC5     ------> ETH_RXD1
129     PA7     ------> ETH_CRS_DV
130     */
131     GPIO_InitStruct.Pin = GPIO_PIN_14|GPIO_PIN_13|GPIO_PIN_11;
132     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
133     GPIO_InitStruct.Pull = GPIO_NOPULL;
134     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
135     GPIO_InitStruct.Alternate = GPIO_AF11_ETH;
136     HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
137 
138     GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5;
139     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
140     GPIO_InitStruct.Pull = GPIO_NOPULL;
141     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
142     GPIO_InitStruct.Alternate = GPIO_AF11_ETH;
143     HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
144 
145     GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_7;
146     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
147     GPIO_InitStruct.Pull = GPIO_NOPULL;
148     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
149     GPIO_InitStruct.Alternate = GPIO_AF11_ETH;
150     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
151 
152   /* USER CODE BEGIN ETH_MspInit 1 */
153 
154   /* USER CODE END ETH_MspInit 1 */
155   }
156 
157 }
158 
159 /**
160 * @brief ETH MSP De-Initialization
161 * This function freeze the hardware resources used in this example
162 * @param heth: ETH handle pointer
163 * @retval None
164 */
HAL_ETH_MspDeInit(ETH_HandleTypeDef * heth)165 void HAL_ETH_MspDeInit(ETH_HandleTypeDef* heth)
166 {
167   if(heth->Instance==ETH)
168   {
169   /* USER CODE BEGIN ETH_MspDeInit 0 */
170 
171   /* USER CODE END ETH_MspDeInit 0 */
172     /* Peripheral clock disable */
173     __HAL_RCC_ETH_CLK_DISABLE();
174 
175     /**ETH GPIO Configuration
176     PG14     ------> ETH_TXD1
177     PG13     ------> ETH_TXD0
178     PG11     ------> ETH_TX_EN
179     PC1     ------> ETH_MDC
180     PA1     ------> ETH_REF_CLK
181     PC4     ------> ETH_RXD0
182     PA2     ------> ETH_MDIO
183     PC5     ------> ETH_RXD1
184     PA7     ------> ETH_CRS_DV
185     */
186     HAL_GPIO_DeInit(GPIOG, GPIO_PIN_14|GPIO_PIN_13|GPIO_PIN_11);
187 
188     HAL_GPIO_DeInit(GPIOC, GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5);
189 
190     HAL_GPIO_DeInit(GPIOA, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_7);
191 
192   /* USER CODE BEGIN ETH_MspDeInit 1 */
193 
194   /* USER CODE END ETH_MspDeInit 1 */
195   }
196 
197 }
198 
199 /**
200 * @brief LTDC MSP Initialization
201 * This function configures the hardware resources used in this example
202 * @param hltdc: LTDC handle pointer
203 * @retval None
204 */
HAL_LTDC_MspInit(LTDC_HandleTypeDef * hltdc)205 void HAL_LTDC_MspInit(LTDC_HandleTypeDef* hltdc)
206 {
207   GPIO_InitTypeDef GPIO_InitStruct = {0};
208   if(hltdc->Instance==LTDC)
209   {
210   /* USER CODE BEGIN LTDC_MspInit 0 */
211 
212   /* USER CODE END LTDC_MspInit 0 */
213     /* Peripheral clock enable */
214     __HAL_RCC_LTDC_CLK_ENABLE();
215 
216     __HAL_RCC_GPIOE_CLK_ENABLE();
217     __HAL_RCC_GPIOJ_CLK_ENABLE();
218     __HAL_RCC_GPIOK_CLK_ENABLE();
219     __HAL_RCC_GPIOG_CLK_ENABLE();
220     __HAL_RCC_GPIOI_CLK_ENABLE();
221     /**LTDC GPIO Configuration
222     PE4     ------> LTDC_B0
223     PJ13     ------> LTDC_B1
224     PK7     ------> LTDC_DE
225     PK6     ------> LTDC_B7
226     PK5     ------> LTDC_B6
227     PG12     ------> LTDC_B4
228     PJ14     ------> LTDC_B2
229     PI10     ------> LTDC_HSYNC
230     PK4     ------> LTDC_B5
231     PJ15     ------> LTDC_B3
232     PI9     ------> LTDC_VSYNC
233     PK1     ------> LTDC_G6
234     PK2     ------> LTDC_G7
235     PI15     ------> LTDC_R0
236     PJ11     ------> LTDC_G4
237     PK0     ------> LTDC_G5
238     PI14     ------> LTDC_CLK
239     PJ8     ------> LTDC_G1
240     PJ10     ------> LTDC_G3
241     PJ7     ------> LTDC_G0
242     PJ9     ------> LTDC_G2
243     PJ6     ------> LTDC_R7
244     PJ4     ------> LTDC_R5
245     PJ5     ------> LTDC_R6
246     PJ3     ------> LTDC_R4
247     PJ2     ------> LTDC_R3
248     PJ0     ------> LTDC_R1
249     PJ1     ------> LTDC_R2
250     */
251     GPIO_InitStruct.Pin = GPIO_PIN_4;
252     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
253     GPIO_InitStruct.Pull = GPIO_NOPULL;
254     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
255     GPIO_InitStruct.Alternate = GPIO_AF14_LTDC;
256     HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
257 
258     GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_11
259                           |GPIO_PIN_8|GPIO_PIN_10|GPIO_PIN_7|GPIO_PIN_9
260                           |GPIO_PIN_6|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_3
261                           |GPIO_PIN_2|GPIO_PIN_0|GPIO_PIN_1;
262     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
263     GPIO_InitStruct.Pull = GPIO_NOPULL;
264     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
265     GPIO_InitStruct.Alternate = GPIO_AF14_LTDC;
266     HAL_GPIO_Init(GPIOJ, &GPIO_InitStruct);
267 
268     GPIO_InitStruct.Pin = GPIO_PIN_7|GPIO_PIN_6|GPIO_PIN_5|GPIO_PIN_4
269                           |GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_0;
270     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
271     GPIO_InitStruct.Pull = GPIO_NOPULL;
272     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
273     GPIO_InitStruct.Alternate = GPIO_AF14_LTDC;
274     HAL_GPIO_Init(GPIOK, &GPIO_InitStruct);
275 
276     GPIO_InitStruct.Pin = GPIO_PIN_12;
277     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
278     GPIO_InitStruct.Pull = GPIO_NOPULL;
279     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
280     GPIO_InitStruct.Alternate = GPIO_AF9_LTDC;
281     HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
282 
283     GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_9|GPIO_PIN_15|GPIO_PIN_14;
284     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
285     GPIO_InitStruct.Pull = GPIO_NOPULL;
286     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
287     GPIO_InitStruct.Alternate = GPIO_AF14_LTDC;
288     HAL_GPIO_Init(GPIOI, &GPIO_InitStruct);
289 
290   /* USER CODE BEGIN LTDC_MspInit 1 */
291 
292   /* USER CODE END LTDC_MspInit 1 */
293   }
294 
295 }
296 
297 /**
298 * @brief LTDC MSP De-Initialization
299 * This function freeze the hardware resources used in this example
300 * @param hltdc: LTDC handle pointer
301 * @retval None
302 */
HAL_LTDC_MspDeInit(LTDC_HandleTypeDef * hltdc)303 void HAL_LTDC_MspDeInit(LTDC_HandleTypeDef* hltdc)
304 {
305   if(hltdc->Instance==LTDC)
306   {
307   /* USER CODE BEGIN LTDC_MspDeInit 0 */
308 
309   /* USER CODE END LTDC_MspDeInit 0 */
310     /* Peripheral clock disable */
311     __HAL_RCC_LTDC_CLK_DISABLE();
312 
313     /**LTDC GPIO Configuration
314     PE4     ------> LTDC_B0
315     PJ13     ------> LTDC_B1
316     PK7     ------> LTDC_DE
317     PK6     ------> LTDC_B7
318     PK5     ------> LTDC_B6
319     PG12     ------> LTDC_B4
320     PJ14     ------> LTDC_B2
321     PI10     ------> LTDC_HSYNC
322     PK4     ------> LTDC_B5
323     PJ15     ------> LTDC_B3
324     PI9     ------> LTDC_VSYNC
325     PK1     ------> LTDC_G6
326     PK2     ------> LTDC_G7
327     PI15     ------> LTDC_R0
328     PJ11     ------> LTDC_G4
329     PK0     ------> LTDC_G5
330     PI14     ------> LTDC_CLK
331     PJ8     ------> LTDC_G1
332     PJ10     ------> LTDC_G3
333     PJ7     ------> LTDC_G0
334     PJ9     ------> LTDC_G2
335     PJ6     ------> LTDC_R7
336     PJ4     ------> LTDC_R5
337     PJ5     ------> LTDC_R6
338     PJ3     ------> LTDC_R4
339     PJ2     ------> LTDC_R3
340     PJ0     ------> LTDC_R1
341     PJ1     ------> LTDC_R2
342     */
343     HAL_GPIO_DeInit(GPIOE, GPIO_PIN_4);
344 
345     HAL_GPIO_DeInit(GPIOJ, GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_11
346                           |GPIO_PIN_8|GPIO_PIN_10|GPIO_PIN_7|GPIO_PIN_9
347                           |GPIO_PIN_6|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_3
348                           |GPIO_PIN_2|GPIO_PIN_0|GPIO_PIN_1);
349 
350     HAL_GPIO_DeInit(GPIOK, GPIO_PIN_7|GPIO_PIN_6|GPIO_PIN_5|GPIO_PIN_4
351                           |GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_0);
352 
353     HAL_GPIO_DeInit(GPIOG, GPIO_PIN_12);
354 
355     HAL_GPIO_DeInit(GPIOI, GPIO_PIN_10|GPIO_PIN_9|GPIO_PIN_15|GPIO_PIN_14);
356 
357   /* USER CODE BEGIN LTDC_MspDeInit 1 */
358 
359   /* USER CODE END LTDC_MspDeInit 1 */
360   }
361 
362 }
363 
364 /**
365 * @brief QSPI MSP Initialization
366 * This function configures the hardware resources used in this example
367 * @param hqspi: QSPI handle pointer
368 * @retval None
369 */
HAL_QSPI_MspInit(QSPI_HandleTypeDef * hqspi)370 void HAL_QSPI_MspInit(QSPI_HandleTypeDef* hqspi)
371 {
372   GPIO_InitTypeDef GPIO_InitStruct = {0};
373   if(hqspi->Instance==QUADSPI)
374   {
375   /* USER CODE BEGIN QUADSPI_MspInit 0 */
376 
377   /* USER CODE END QUADSPI_MspInit 0 */
378     /* Peripheral clock enable */
379     __HAL_RCC_QSPI_CLK_ENABLE();
380 
381     __HAL_RCC_GPIOE_CLK_ENABLE();
382     __HAL_RCC_GPIOB_CLK_ENABLE();
383     __HAL_RCC_GPIOD_CLK_ENABLE();
384     /**QUADSPI GPIO Configuration
385     PE2     ------> QUADSPI_BK1_IO2
386     PB6     ------> QUADSPI_BK1_NCS
387     PB2     ------> QUADSPI_CLK
388     PD12     ------> QUADSPI_BK1_IO1
389     PD13     ------> QUADSPI_BK1_IO3
390     PD11     ------> QUADSPI_BK1_IO0
391     */
392     GPIO_InitStruct.Pin = GPIO_PIN_2;
393     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
394     GPIO_InitStruct.Pull = GPIO_NOPULL;
395     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
396     GPIO_InitStruct.Alternate = GPIO_AF9_QUADSPI;
397     HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
398 
399     GPIO_InitStruct.Pin = GPIO_PIN_6;
400     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
401     GPIO_InitStruct.Pull = GPIO_NOPULL;
402     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
403     GPIO_InitStruct.Alternate = GPIO_AF10_QUADSPI;
404     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
405 
406     GPIO_InitStruct.Pin = GPIO_PIN_2;
407     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
408     GPIO_InitStruct.Pull = GPIO_NOPULL;
409     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
410     GPIO_InitStruct.Alternate = GPIO_AF9_QUADSPI;
411     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
412 
413     GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_11;
414     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
415     GPIO_InitStruct.Pull = GPIO_NOPULL;
416     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
417     GPIO_InitStruct.Alternate = GPIO_AF9_QUADSPI;
418     HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
419 
420   /* USER CODE BEGIN QUADSPI_MspInit 1 */
421 
422   /* USER CODE END QUADSPI_MspInit 1 */
423   }
424 
425 }
426 
427 /**
428 * @brief QSPI MSP De-Initialization
429 * This function freeze the hardware resources used in this example
430 * @param hqspi: QSPI handle pointer
431 * @retval None
432 */
HAL_QSPI_MspDeInit(QSPI_HandleTypeDef * hqspi)433 void HAL_QSPI_MspDeInit(QSPI_HandleTypeDef* hqspi)
434 {
435   if(hqspi->Instance==QUADSPI)
436   {
437   /* USER CODE BEGIN QUADSPI_MspDeInit 0 */
438 
439   /* USER CODE END QUADSPI_MspDeInit 0 */
440     /* Peripheral clock disable */
441     __HAL_RCC_QSPI_CLK_DISABLE();
442 
443     /**QUADSPI GPIO Configuration
444     PE2     ------> QUADSPI_BK1_IO2
445     PB6     ------> QUADSPI_BK1_NCS
446     PB2     ------> QUADSPI_CLK
447     PD12     ------> QUADSPI_BK1_IO1
448     PD13     ------> QUADSPI_BK1_IO3
449     PD11     ------> QUADSPI_BK1_IO0
450     */
451     HAL_GPIO_DeInit(GPIOE, GPIO_PIN_2);
452 
453     HAL_GPIO_DeInit(GPIOB, GPIO_PIN_6|GPIO_PIN_2);
454 
455     HAL_GPIO_DeInit(GPIOD, GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_11);
456 
457   /* USER CODE BEGIN QUADSPI_MspDeInit 1 */
458 
459   /* USER CODE END QUADSPI_MspDeInit 1 */
460   }
461 
462 }
463 
464 /**
465 * @brief SD MSP Initialization
466 * This function configures the hardware resources used in this example
467 * @param hsd: SD handle pointer
468 * @retval None
469 */
HAL_SD_MspInit(SD_HandleTypeDef * hsd)470 void HAL_SD_MspInit(SD_HandleTypeDef* hsd)
471 {
472   GPIO_InitTypeDef GPIO_InitStruct = {0};
473   if(hsd->Instance==SDMMC1)
474   {
475   /* USER CODE BEGIN SDMMC1_MspInit 0 */
476 
477   /* USER CODE END SDMMC1_MspInit 0 */
478     /* Peripheral clock enable */
479     __HAL_RCC_SDMMC1_CLK_ENABLE();
480 
481     __HAL_RCC_GPIOC_CLK_ENABLE();
482     __HAL_RCC_GPIOD_CLK_ENABLE();
483     /**SDMMC1 GPIO Configuration
484     PC12     ------> SDMMC1_CK
485     PC11     ------> SDMMC1_D3
486     PC10     ------> SDMMC1_D2
487     PD2     ------> SDMMC1_CMD
488     PC9     ------> SDMMC1_D1
489     PC8     ------> SDMMC1_D0
490     */
491     GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_11|GPIO_PIN_10|GPIO_PIN_9
492                           |GPIO_PIN_8;
493     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
494     GPIO_InitStruct.Pull = GPIO_NOPULL;
495     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
496     GPIO_InitStruct.Alternate = GPIO_AF12_SDMMC1;
497     HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
498 
499     GPIO_InitStruct.Pin = GPIO_PIN_2;
500     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
501     GPIO_InitStruct.Pull = GPIO_NOPULL;
502     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
503     GPIO_InitStruct.Alternate = GPIO_AF12_SDMMC1;
504     HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
505 
506   /* USER CODE BEGIN SDMMC1_MspInit 1 */
507 
508   /* USER CODE END SDMMC1_MspInit 1 */
509   }
510 
511 }
512 
513 /**
514 * @brief SD MSP De-Initialization
515 * This function freeze the hardware resources used in this example
516 * @param hsd: SD handle pointer
517 * @retval None
518 */
HAL_SD_MspDeInit(SD_HandleTypeDef * hsd)519 void HAL_SD_MspDeInit(SD_HandleTypeDef* hsd)
520 {
521   if(hsd->Instance==SDMMC1)
522   {
523   /* USER CODE BEGIN SDMMC1_MspDeInit 0 */
524 
525   /* USER CODE END SDMMC1_MspDeInit 0 */
526     /* Peripheral clock disable */
527     __HAL_RCC_SDMMC1_CLK_DISABLE();
528 
529     /**SDMMC1 GPIO Configuration
530     PC12     ------> SDMMC1_CK
531     PC11     ------> SDMMC1_D3
532     PC10     ------> SDMMC1_D2
533     PD2     ------> SDMMC1_CMD
534     PC9     ------> SDMMC1_D1
535     PC8     ------> SDMMC1_D0
536     */
537     HAL_GPIO_DeInit(GPIOC, GPIO_PIN_12|GPIO_PIN_11|GPIO_PIN_10|GPIO_PIN_9
538                           |GPIO_PIN_8);
539 
540     HAL_GPIO_DeInit(GPIOD, GPIO_PIN_2);
541 
542   /* USER CODE BEGIN SDMMC1_MspDeInit 1 */
543 
544   /* USER CODE END SDMMC1_MspDeInit 1 */
545   }
546 
547 }
548 
549 /**
550 * @brief TIM_Base MSP Initialization
551 * This function configures the hardware resources used in this example
552 * @param htim_base: TIM_Base handle pointer
553 * @retval None
554 */
HAL_TIM_Base_MspInit(TIM_HandleTypeDef * htim_base)555 void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
556 {
557   if(htim_base->Instance==TIM11)
558   {
559   /* USER CODE BEGIN TIM11_MspInit 0 */
560 
561   /* USER CODE END TIM11_MspInit 0 */
562     /* Peripheral clock enable */
563     __HAL_RCC_TIM11_CLK_ENABLE();
564   /* USER CODE BEGIN TIM11_MspInit 1 */
565 
566   /* USER CODE END TIM11_MspInit 1 */
567   }
568 
569 }
570 
571 /**
572 * @brief TIM_Base MSP De-Initialization
573 * This function freeze the hardware resources used in this example
574 * @param htim_base: TIM_Base handle pointer
575 * @retval None
576 */
HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef * htim_base)577 void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)
578 {
579   if(htim_base->Instance==TIM11)
580   {
581   /* USER CODE BEGIN TIM11_MspDeInit 0 */
582 
583   /* USER CODE END TIM11_MspDeInit 0 */
584     /* Peripheral clock disable */
585     __HAL_RCC_TIM11_CLK_DISABLE();
586   /* USER CODE BEGIN TIM11_MspDeInit 1 */
587 
588   /* USER CODE END TIM11_MspDeInit 1 */
589   }
590 
591 }
592 
593 /**
594 * @brief UART MSP Initialization
595 * This function configures the hardware resources used in this example
596 * @param huart: UART handle pointer
597 * @retval None
598 */
HAL_UART_MspInit(UART_HandleTypeDef * huart)599 void HAL_UART_MspInit(UART_HandleTypeDef* huart)
600 {
601   GPIO_InitTypeDef GPIO_InitStruct = {0};
602   if(huart->Instance==USART1)
603   {
604   /* USER CODE BEGIN USART1_MspInit 0 */
605 
606   /* USER CODE END USART1_MspInit 0 */
607     /* Peripheral clock enable */
608     __HAL_RCC_USART1_CLK_ENABLE();
609 
610     __HAL_RCC_GPIOB_CLK_ENABLE();
611     __HAL_RCC_GPIOA_CLK_ENABLE();
612     /**USART1 GPIO Configuration
613     PB7     ------> USART1_RX
614     PA9     ------> USART1_TX
615     */
616     GPIO_InitStruct.Pin = GPIO_PIN_7;
617     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
618     GPIO_InitStruct.Pull = GPIO_PULLUP;
619     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
620     GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
621     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
622 
623     GPIO_InitStruct.Pin = GPIO_PIN_9;
624     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
625     GPIO_InitStruct.Pull = GPIO_PULLUP;
626     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
627     GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
628     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
629 
630   /* USER CODE BEGIN USART1_MspInit 1 */
631 
632   /* USER CODE END USART1_MspInit 1 */
633   }
634 
635 }
636 
637 /**
638 * @brief UART MSP De-Initialization
639 * This function freeze the hardware resources used in this example
640 * @param huart: UART handle pointer
641 * @retval None
642 */
HAL_UART_MspDeInit(UART_HandleTypeDef * huart)643 void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
644 {
645   if(huart->Instance==USART1)
646   {
647   /* USER CODE BEGIN USART1_MspDeInit 0 */
648 
649   /* USER CODE END USART1_MspDeInit 0 */
650     /* Peripheral clock disable */
651     __HAL_RCC_USART1_CLK_DISABLE();
652 
653     /**USART1 GPIO Configuration
654     PB7     ------> USART1_RX
655     PA9     ------> USART1_TX
656     */
657     HAL_GPIO_DeInit(GPIOB, GPIO_PIN_7);
658 
659     HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9);
660 
661   /* USER CODE BEGIN USART1_MspDeInit 1 */
662 
663   /* USER CODE END USART1_MspDeInit 1 */
664   }
665 
666 }
667 
668 static uint32_t FMC_Initialized = 0;
669 
HAL_FMC_MspInit(void)670 static void HAL_FMC_MspInit(void){
671   /* USER CODE BEGIN FMC_MspInit 0 */
672 
673   /* USER CODE END FMC_MspInit 0 */
674   GPIO_InitTypeDef GPIO_InitStruct = {0};
675   if (FMC_Initialized) {
676     return;
677   }
678   FMC_Initialized = 1;
679   /* Peripheral clock enable */
680   __HAL_RCC_FMC_CLK_ENABLE();
681 
682   /** FMC GPIO Configuration
683   PG15   ------> FMC_SDNCAS
684   PD0   ------> FMC_D2
685   PD1   ------> FMC_D3
686   PF0   ------> FMC_A0
687   PF1   ------> FMC_A1
688   PF2   ------> FMC_A2
689   PF3   ------> FMC_A3
690   PG8   ------> FMC_SDCLK
691   PF4   ------> FMC_A4
692   PH5   ------> FMC_SDNWE
693   PH3   ------> FMC_SDNE0
694   PF5   ------> FMC_A5
695   PD15   ------> FMC_D1
696   PD10   ------> FMC_D15
697   PC3   ------> FMC_SDCKE0
698   PD14   ------> FMC_D0
699   PD9   ------> FMC_D14
700   PD8   ------> FMC_D13
701   PF12   ------> FMC_A6
702   PF15   ------> FMC_A9
703   PF13   ------> FMC_A7
704   PG0   ------> FMC_A10
705   PE8   ------> FMC_D5
706   PG5   ------> FMC_BA1
707   PG4   ------> FMC_BA0
708   PF14   ------> FMC_A8
709   PF11   ------> FMC_SDNRAS
710   PE9   ------> FMC_D6
711   PE11   ------> FMC_D8
712   PE14   ------> FMC_D11
713   PE7   ------> FMC_D4
714   PE10   ------> FMC_D7
715   PE12   ------> FMC_D9
716   PE15   ------> FMC_D12
717   PE13   ------> FMC_D10
718   */
719   GPIO_InitStruct.Mode      = GPIO_MODE_AF_PP;
720   GPIO_InitStruct.Pull      = GPIO_NOPULL;
721   GPIO_InitStruct.Speed     = GPIO_SPEED_FREQ_VERY_HIGH;
722   GPIO_InitStruct.Alternate = GPIO_AF12_FMC;
723 
724   GPIO_InitStruct.Pin = GPIO_PIN_3;
725   HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
726 
727   GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_8 | GPIO_PIN_9 |\
728                         GPIO_PIN_10 | GPIO_PIN_14 | GPIO_PIN_15;
729   HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
730 
731   GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9      |\
732                         GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 |\
733                         GPIO_PIN_15;
734   HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
735 
736   GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4     |\
737                         GPIO_PIN_5 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 |\
738                         GPIO_PIN_15;
739   HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
740 
741   GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_8 | GPIO_PIN_15;
742   HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
743 
744   GPIO_InitStruct.Pin = GPIO_PIN_3 | GPIO_PIN_5;
745   HAL_GPIO_Init(GPIOH, &GPIO_InitStruct);
746 
747   /* USER CODE BEGIN FMC_MspInit 1 */
748 
749   /* USER CODE END FMC_MspInit 1 */
750 }
751 
HAL_SDRAM_MspInit(SDRAM_HandleTypeDef * hsdram)752 void HAL_SDRAM_MspInit(SDRAM_HandleTypeDef* hsdram){
753   /* USER CODE BEGIN SDRAM_MspInit 0 */
754 
755   /* USER CODE END SDRAM_MspInit 0 */
756   HAL_FMC_MspInit();
757   /* USER CODE BEGIN SDRAM_MspInit 1 */
758 
759   /* USER CODE END SDRAM_MspInit 1 */
760 }
761 
762 static uint32_t FMC_DeInitialized = 0;
763 
HAL_FMC_MspDeInit(void)764 static void HAL_FMC_MspDeInit(void){
765   /* USER CODE BEGIN FMC_MspDeInit 0 */
766 
767   /* USER CODE END FMC_MspDeInit 0 */
768   if (FMC_DeInitialized) {
769     return;
770   }
771   FMC_DeInitialized = 1;
772   /* Peripheral clock enable */
773   __HAL_RCC_FMC_CLK_DISABLE();
774 
775   /** FMC GPIO Configuration
776   PG15   ------> FMC_SDNCAS
777   PD0   ------> FMC_D2
778   PD1   ------> FMC_D3
779   PF0   ------> FMC_A0
780   PF1   ------> FMC_A1
781   PF2   ------> FMC_A2
782   PF3   ------> FMC_A3
783   PG8   ------> FMC_SDCLK
784   PF4   ------> FMC_A4
785   PH5   ------> FMC_SDNWE
786   PH3   ------> FMC_SDNE0
787   PF5   ------> FMC_A5
788   PD15   ------> FMC_D1
789   PD10   ------> FMC_D15
790   PC3   ------> FMC_SDCKE0
791   PD14   ------> FMC_D0
792   PD9   ------> FMC_D14
793   PD8   ------> FMC_D13
794   PF12   ------> FMC_A6
795   PF15   ------> FMC_A9
796   PF13   ------> FMC_A7
797   PG0   ------> FMC_A10
798   PE8   ------> FMC_D5
799   PG5   ------> FMC_BA1
800   PG4   ------> FMC_BA0
801   PF14   ------> FMC_A8
802   PF11   ------> FMC_SDNRAS
803   PE9   ------> FMC_D6
804   PE11   ------> FMC_D8
805   PE14   ------> FMC_D11
806   PE7   ------> FMC_D4
807   PE10   ------> FMC_D7
808   PE12   ------> FMC_D9
809   PE15   ------> FMC_D12
810   PE13   ------> FMC_D10
811   */
812   HAL_GPIO_DeInit(GPIOG, GPIO_PIN_15|GPIO_PIN_8|GPIO_PIN_0|GPIO_PIN_5
813                           |GPIO_PIN_4);
814 
815   HAL_GPIO_DeInit(GPIOD, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_15|GPIO_PIN_10
816                           |GPIO_PIN_14|GPIO_PIN_9|GPIO_PIN_8);
817 
818   HAL_GPIO_DeInit(GPIOF, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3
819                           |GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_12|GPIO_PIN_15
820                           |GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_11);
821 
822   HAL_GPIO_DeInit(GPIOH, GPIO_PIN_5|GPIO_PIN_3);
823 
824   HAL_GPIO_DeInit(GPIOC, GPIO_PIN_3);
825 
826   HAL_GPIO_DeInit(GPIOE, GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_11|GPIO_PIN_14
827                           |GPIO_PIN_7|GPIO_PIN_10|GPIO_PIN_12|GPIO_PIN_15
828                           |GPIO_PIN_13);
829 
830   /* USER CODE BEGIN FMC_MspDeInit 1 */
831 
832   /* USER CODE END FMC_MspDeInit 1 */
833 }
834 
HAL_SDRAM_MspDeInit(SDRAM_HandleTypeDef * hsdram)835 void HAL_SDRAM_MspDeInit(SDRAM_HandleTypeDef* hsdram){
836   /* USER CODE BEGIN SDRAM_MspDeInit 0 */
837 
838   /* USER CODE END SDRAM_MspDeInit 0 */
839   HAL_FMC_MspDeInit();
840   /* USER CODE BEGIN SDRAM_MspDeInit 1 */
841 
842   /* USER CODE END SDRAM_MspDeInit 1 */
843 }
844 
845 /* USER CODE BEGIN 1 */
846 
847 /* USER CODE END 1 */
848 
849 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
850