1 /* USER CODE BEGIN Header */
2 /**
3   ******************************************************************************
4   * File Name          : stm32f4xx_hal_msp.c
5   * Description        : This file provides code for the MSP Initialization
6   *                      and de-Initialization codes.
7   ******************************************************************************
8   * @attention
9   *
10   * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
11   * All rights reserved.</center></h2>
12   *
13   * This software component is licensed by ST under Ultimate Liberty license
14   * SLA0044, the "License"; You may not use this file except in compliance with
15   * the License. You may obtain a copy of the License at:
16   *                             www.st.com/SLA0044
17   *
18   ******************************************************************************
19   */
20 /* USER CODE END Header */
21 
22 /* Includes ------------------------------------------------------------------*/
23 #include "main.h"
24 /* USER CODE BEGIN Includes */
25 #include <drv_common.h>
26 /* USER CODE END Includes */
27 
28 /* Private typedef -----------------------------------------------------------*/
29 /* USER CODE BEGIN TD */
30 
31 /* USER CODE END TD */
32 
33 /* Private define ------------------------------------------------------------*/
34 /* USER CODE BEGIN Define */
35 
36 /* USER CODE END Define */
37 
38 /* Private macro -------------------------------------------------------------*/
39 /* USER CODE BEGIN Macro */
40 
41 /* USER CODE END Macro */
42 
43 /* Private variables ---------------------------------------------------------*/
44 /* USER CODE BEGIN PV */
45 
46 /* USER CODE END PV */
47 
48 /* Private function prototypes -----------------------------------------------*/
49 /* USER CODE BEGIN PFP */
50 
51 /* USER CODE END PFP */
52 
53 /* External functions --------------------------------------------------------*/
54 /* USER CODE BEGIN ExternalFunctions */
55 
56 /* USER CODE END ExternalFunctions */
57 
58 /* USER CODE BEGIN 0 */
59 
60 /* USER CODE END 0 */
61 /**
62   * Initializes the Global MSP.
63   */
HAL_MspInit(void)64 void HAL_MspInit(void)
65 {
66   /* USER CODE BEGIN MspInit 0 */
67 
68   /* USER CODE END MspInit 0 */
69 
70   __HAL_RCC_SYSCFG_CLK_ENABLE();
71   __HAL_RCC_PWR_CLK_ENABLE();
72 
73   /* System interrupt init*/
74   /* PendSV_IRQn interrupt configuration */
75   HAL_NVIC_SetPriority(PendSV_IRQn, 15, 0);
76 
77   /* USER CODE BEGIN MspInit 1 */
78 
79   /* USER CODE END MspInit 1 */
80 }
81 
82 /**
83 * @brief CRC MSP Initialization
84 * This function configures the hardware resources used in this example
85 * @param hcrc: CRC handle pointer
86 * @retval None
87 */
HAL_CRC_MspInit(CRC_HandleTypeDef * hcrc)88 void HAL_CRC_MspInit(CRC_HandleTypeDef* hcrc)
89 {
90   if(hcrc->Instance==CRC)
91   {
92   /* USER CODE BEGIN CRC_MspInit 0 */
93 
94   /* USER CODE END CRC_MspInit 0 */
95     /* Peripheral clock enable */
96     __HAL_RCC_CRC_CLK_ENABLE();
97   /* USER CODE BEGIN CRC_MspInit 1 */
98 
99   /* USER CODE END CRC_MspInit 1 */
100   }
101 
102 }
103 
104 /**
105 * @brief CRC MSP De-Initialization
106 * This function freeze the hardware resources used in this example
107 * @param hcrc: CRC handle pointer
108 * @retval None
109 */
HAL_CRC_MspDeInit(CRC_HandleTypeDef * hcrc)110 void HAL_CRC_MspDeInit(CRC_HandleTypeDef* hcrc)
111 {
112   if(hcrc->Instance==CRC)
113   {
114   /* USER CODE BEGIN CRC_MspDeInit 0 */
115 
116   /* USER CODE END CRC_MspDeInit 0 */
117     /* Peripheral clock disable */
118     __HAL_RCC_CRC_CLK_DISABLE();
119   /* USER CODE BEGIN CRC_MspDeInit 1 */
120 
121   /* USER CODE END CRC_MspDeInit 1 */
122   }
123 
124 }
125 
126 /**
127 * @brief DMA2D MSP Initialization
128 * This function configures the hardware resources used in this example
129 * @param hdma2d: DMA2D handle pointer
130 * @retval None
131 */
HAL_DMA2D_MspInit(DMA2D_HandleTypeDef * hdma2d)132 void HAL_DMA2D_MspInit(DMA2D_HandleTypeDef* hdma2d)
133 {
134   if(hdma2d->Instance==DMA2D)
135   {
136   /* USER CODE BEGIN DMA2D_MspInit 0 */
137 
138   /* USER CODE END DMA2D_MspInit 0 */
139     /* Peripheral clock enable */
140     __HAL_RCC_DMA2D_CLK_ENABLE();
141     /* DMA2D interrupt Init */
142     HAL_NVIC_SetPriority(DMA2D_IRQn, 5, 0);
143     HAL_NVIC_EnableIRQ(DMA2D_IRQn);
144   /* USER CODE BEGIN DMA2D_MspInit 1 */
145 
146   /* USER CODE END DMA2D_MspInit 1 */
147   }
148 
149 }
150 
151 /**
152 * @brief DMA2D MSP De-Initialization
153 * This function freeze the hardware resources used in this example
154 * @param hdma2d: DMA2D handle pointer
155 * @retval None
156 */
HAL_DMA2D_MspDeInit(DMA2D_HandleTypeDef * hdma2d)157 void HAL_DMA2D_MspDeInit(DMA2D_HandleTypeDef* hdma2d)
158 {
159   if(hdma2d->Instance==DMA2D)
160   {
161   /* USER CODE BEGIN DMA2D_MspDeInit 0 */
162 
163   /* USER CODE END DMA2D_MspDeInit 0 */
164     /* Peripheral clock disable */
165     __HAL_RCC_DMA2D_CLK_DISABLE();
166 
167     /* DMA2D interrupt DeInit */
168     HAL_NVIC_DisableIRQ(DMA2D_IRQn);
169   /* USER CODE BEGIN DMA2D_MspDeInit 1 */
170 
171   /* USER CODE END DMA2D_MspDeInit 1 */
172   }
173 
174 }
175 
176 /**
177 * @brief I2C MSP Initialization
178 * This function configures the hardware resources used in this example
179 * @param hi2c: I2C handle pointer
180 * @retval None
181 */
HAL_I2C_MspInit(I2C_HandleTypeDef * hi2c)182 void HAL_I2C_MspInit(I2C_HandleTypeDef* hi2c)
183 {
184   GPIO_InitTypeDef GPIO_InitStruct = {0};
185   if(hi2c->Instance==I2C3)
186   {
187   /* USER CODE BEGIN I2C3_MspInit 0 */
188 
189   /* USER CODE END I2C3_MspInit 0 */
190 
191     __HAL_RCC_GPIOC_CLK_ENABLE();
192     __HAL_RCC_GPIOA_CLK_ENABLE();
193     /**I2C3 GPIO Configuration
194     PC9     ------> I2C3_SDA
195     PA8     ------> I2C3_SCL
196     */
197     GPIO_InitStruct.Pin = I2C3_SDA_Pin;
198     GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
199     GPIO_InitStruct.Pull = GPIO_PULLUP;
200     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
201     GPIO_InitStruct.Alternate = GPIO_AF4_I2C3;
202     HAL_GPIO_Init(I2C3_SDA_GPIO_Port, &GPIO_InitStruct);
203 
204     GPIO_InitStruct.Pin = I2C3_SCL_Pin;
205     GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
206     GPIO_InitStruct.Pull = GPIO_PULLUP;
207     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
208     GPIO_InitStruct.Alternate = GPIO_AF4_I2C3;
209     HAL_GPIO_Init(I2C3_SCL_GPIO_Port, &GPIO_InitStruct);
210 
211     /* Peripheral clock enable */
212     __HAL_RCC_I2C3_CLK_ENABLE();
213   /* USER CODE BEGIN I2C3_MspInit 1 */
214 
215   /* USER CODE END I2C3_MspInit 1 */
216   }
217 
218 }
219 
220 /**
221 * @brief I2C MSP De-Initialization
222 * This function freeze the hardware resources used in this example
223 * @param hi2c: I2C handle pointer
224 * @retval None
225 */
HAL_I2C_MspDeInit(I2C_HandleTypeDef * hi2c)226 void HAL_I2C_MspDeInit(I2C_HandleTypeDef* hi2c)
227 {
228   if(hi2c->Instance==I2C3)
229   {
230   /* USER CODE BEGIN I2C3_MspDeInit 0 */
231 
232   /* USER CODE END I2C3_MspDeInit 0 */
233     /* Peripheral clock disable */
234     __HAL_RCC_I2C3_CLK_DISABLE();
235 
236     /**I2C3 GPIO Configuration
237     PC9     ------> I2C3_SDA
238     PA8     ------> I2C3_SCL
239     */
240     HAL_GPIO_DeInit(I2C3_SDA_GPIO_Port, I2C3_SDA_Pin);
241 
242     HAL_GPIO_DeInit(I2C3_SCL_GPIO_Port, I2C3_SCL_Pin);
243 
244   /* USER CODE BEGIN I2C3_MspDeInit 1 */
245 
246   /* USER CODE END I2C3_MspDeInit 1 */
247   }
248 
249 }
250 
251 /**
252 * @brief LTDC MSP Initialization
253 * This function configures the hardware resources used in this example
254 * @param hltdc: LTDC handle pointer
255 * @retval None
256 */
HAL_LTDC_MspInit(LTDC_HandleTypeDef * hltdc)257 void HAL_LTDC_MspInit(LTDC_HandleTypeDef* hltdc)
258 {
259   GPIO_InitTypeDef GPIO_InitStruct = {0};
260   if(hltdc->Instance==LTDC)
261   {
262   /* USER CODE BEGIN LTDC_MspInit 0 */
263 
264   /* USER CODE END LTDC_MspInit 0 */
265     /* Peripheral clock enable */
266     __HAL_RCC_LTDC_CLK_ENABLE();
267 
268     __HAL_RCC_GPIOF_CLK_ENABLE();
269     __HAL_RCC_GPIOA_CLK_ENABLE();
270     __HAL_RCC_GPIOB_CLK_ENABLE();
271     __HAL_RCC_GPIOG_CLK_ENABLE();
272     __HAL_RCC_GPIOC_CLK_ENABLE();
273     __HAL_RCC_GPIOD_CLK_ENABLE();
274     /**LTDC GPIO Configuration
275     PF10     ------> LTDC_DE
276     PA3     ------> LTDC_B5
277     PA4     ------> LTDC_VSYNC
278     PA6     ------> LTDC_G2
279     PB0     ------> LTDC_R3
280     PB1     ------> LTDC_R6
281     PB10     ------> LTDC_G4
282     PB11     ------> LTDC_G5
283     PG6     ------> LTDC_R7
284     PG7     ------> LTDC_CLK
285     PC6     ------> LTDC_HSYNC
286     PC7     ------> LTDC_G6
287     PA11     ------> LTDC_R4
288     PA12     ------> LTDC_R5
289     PC10     ------> LTDC_R2
290     PD3     ------> LTDC_G7
291     PD6     ------> LTDC_B2
292     PG10     ------> LTDC_G3
293     PG11     ------> LTDC_B3
294     PG12     ------> LTDC_B4
295     PB8     ------> LTDC_B6
296     PB9     ------> LTDC_B7
297     */
298     GPIO_InitStruct.Pin = ENABLE_Pin;
299     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
300     GPIO_InitStruct.Pull = GPIO_NOPULL;
301     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
302     GPIO_InitStruct.Alternate = GPIO_AF14_LTDC;
303     HAL_GPIO_Init(ENABLE_GPIO_Port, &GPIO_InitStruct);
304 
305     GPIO_InitStruct.Pin = B5_Pin|VSYNC_Pin|G2_Pin|R4_Pin
306                           |R5_Pin;
307     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
308     GPIO_InitStruct.Pull = GPIO_NOPULL;
309     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
310     GPIO_InitStruct.Alternate = GPIO_AF14_LTDC;
311     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
312 
313     GPIO_InitStruct.Pin = R3_Pin|R6_Pin;
314     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
315     GPIO_InitStruct.Pull = GPIO_NOPULL;
316     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
317     GPIO_InitStruct.Alternate = GPIO_AF9_LTDC;
318     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
319 
320     GPIO_InitStruct.Pin = G4_Pin|G5_Pin|B6_Pin|B7_Pin;
321     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
322     GPIO_InitStruct.Pull = GPIO_NOPULL;
323     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
324     GPIO_InitStruct.Alternate = GPIO_AF14_LTDC;
325     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
326 
327     GPIO_InitStruct.Pin = R7_Pin|DOTCLK_Pin|B3_Pin;
328     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
329     GPIO_InitStruct.Pull = GPIO_NOPULL;
330     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
331     GPIO_InitStruct.Alternate = GPIO_AF14_LTDC;
332     HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
333 
334     GPIO_InitStruct.Pin = HSYNC_Pin|G6_Pin|R2_Pin;
335     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
336     GPIO_InitStruct.Pull = GPIO_NOPULL;
337     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
338     GPIO_InitStruct.Alternate = GPIO_AF14_LTDC;
339     HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
340 
341     GPIO_InitStruct.Pin = G7_Pin|B2_Pin;
342     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
343     GPIO_InitStruct.Pull = GPIO_NOPULL;
344     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
345     GPIO_InitStruct.Alternate = GPIO_AF14_LTDC;
346     HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
347 
348     GPIO_InitStruct.Pin = G3_Pin|B4_Pin;
349     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
350     GPIO_InitStruct.Pull = GPIO_NOPULL;
351     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
352     GPIO_InitStruct.Alternate = GPIO_AF9_LTDC;
353     HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
354 
355     /* LTDC interrupt Init */
356     HAL_NVIC_SetPriority(LTDC_IRQn, 5, 0);
357     HAL_NVIC_EnableIRQ(LTDC_IRQn);
358   /* USER CODE BEGIN LTDC_MspInit 1 */
359 
360   /* USER CODE END LTDC_MspInit 1 */
361   }
362 
363 }
364 
365 /**
366 * @brief LTDC MSP De-Initialization
367 * This function freeze the hardware resources used in this example
368 * @param hltdc: LTDC handle pointer
369 * @retval None
370 */
HAL_LTDC_MspDeInit(LTDC_HandleTypeDef * hltdc)371 void HAL_LTDC_MspDeInit(LTDC_HandleTypeDef* hltdc)
372 {
373   if(hltdc->Instance==LTDC)
374   {
375   /* USER CODE BEGIN LTDC_MspDeInit 0 */
376 
377   /* USER CODE END LTDC_MspDeInit 0 */
378     /* Peripheral clock disable */
379     __HAL_RCC_LTDC_CLK_DISABLE();
380 
381     /**LTDC GPIO Configuration
382     PF10     ------> LTDC_DE
383     PA3     ------> LTDC_B5
384     PA4     ------> LTDC_VSYNC
385     PA6     ------> LTDC_G2
386     PB0     ------> LTDC_R3
387     PB1     ------> LTDC_R6
388     PB10     ------> LTDC_G4
389     PB11     ------> LTDC_G5
390     PG6     ------> LTDC_R7
391     PG7     ------> LTDC_CLK
392     PC6     ------> LTDC_HSYNC
393     PC7     ------> LTDC_G6
394     PA11     ------> LTDC_R4
395     PA12     ------> LTDC_R5
396     PC10     ------> LTDC_R2
397     PD3     ------> LTDC_G7
398     PD6     ------> LTDC_B2
399     PG10     ------> LTDC_G3
400     PG11     ------> LTDC_B3
401     PG12     ------> LTDC_B4
402     PB8     ------> LTDC_B6
403     PB9     ------> LTDC_B7
404     */
405     HAL_GPIO_DeInit(ENABLE_GPIO_Port, ENABLE_Pin);
406 
407     HAL_GPIO_DeInit(GPIOA, B5_Pin|VSYNC_Pin|G2_Pin|R4_Pin
408                           |R5_Pin);
409 
410     HAL_GPIO_DeInit(GPIOB, R3_Pin|R6_Pin|G4_Pin|G5_Pin
411                           |B6_Pin|B7_Pin);
412 
413     HAL_GPIO_DeInit(GPIOG, R7_Pin|DOTCLK_Pin|G3_Pin|B3_Pin
414                           |B4_Pin);
415 
416     HAL_GPIO_DeInit(GPIOC, HSYNC_Pin|G6_Pin|R2_Pin);
417 
418     HAL_GPIO_DeInit(GPIOD, G7_Pin|B2_Pin);
419 
420     /* LTDC interrupt DeInit */
421     HAL_NVIC_DisableIRQ(LTDC_IRQn);
422   /* USER CODE BEGIN LTDC_MspDeInit 1 */
423 
424   /* USER CODE END LTDC_MspDeInit 1 */
425   }
426 
427 }
428 
429 /**
430 * @brief SPI MSP Initialization
431 * This function configures the hardware resources used in this example
432 * @param hspi: SPI handle pointer
433 * @retval None
434 */
HAL_SPI_MspInit(SPI_HandleTypeDef * hspi)435 void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
436 {
437   GPIO_InitTypeDef GPIO_InitStruct = {0};
438   if(hspi->Instance==SPI5)
439   {
440   /* USER CODE BEGIN SPI5_MspInit 0 */
441 
442   /* USER CODE END SPI5_MspInit 0 */
443     /* Peripheral clock enable */
444     __HAL_RCC_SPI5_CLK_ENABLE();
445 
446     __HAL_RCC_GPIOF_CLK_ENABLE();
447     /**SPI5 GPIO Configuration
448     PF7     ------> SPI5_SCK
449     PF8     ------> SPI5_MISO
450     PF9     ------> SPI5_MOSI
451     */
452     GPIO_InitStruct.Pin = SPI5_SCK_Pin|SPI5_MISO_Pin|SPI5_MOSI_Pin;
453     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
454     GPIO_InitStruct.Pull = GPIO_NOPULL;
455     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
456     GPIO_InitStruct.Alternate = GPIO_AF5_SPI5;
457     HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
458 
459   /* USER CODE BEGIN SPI5_MspInit 1 */
460 
461   /* USER CODE END SPI5_MspInit 1 */
462   }
463 
464 }
465 
466 /**
467 * @brief SPI MSP De-Initialization
468 * This function freeze the hardware resources used in this example
469 * @param hspi: SPI handle pointer
470 * @retval None
471 */
HAL_SPI_MspDeInit(SPI_HandleTypeDef * hspi)472 void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi)
473 {
474   if(hspi->Instance==SPI5)
475   {
476   /* USER CODE BEGIN SPI5_MspDeInit 0 */
477 
478   /* USER CODE END SPI5_MspDeInit 0 */
479     /* Peripheral clock disable */
480     __HAL_RCC_SPI5_CLK_DISABLE();
481 
482     /**SPI5 GPIO Configuration
483     PF7     ------> SPI5_SCK
484     PF8     ------> SPI5_MISO
485     PF9     ------> SPI5_MOSI
486     */
487     HAL_GPIO_DeInit(GPIOF, SPI5_SCK_Pin|SPI5_MISO_Pin|SPI5_MOSI_Pin);
488 
489   /* USER CODE BEGIN SPI5_MspDeInit 1 */
490 
491   /* USER CODE END SPI5_MspDeInit 1 */
492   }
493 
494 }
495 
496 /**
497 * @brief TIM_Base MSP Initialization
498 * This function configures the hardware resources used in this example
499 * @param htim_base: TIM_Base handle pointer
500 * @retval None
501 */
HAL_TIM_Base_MspInit(TIM_HandleTypeDef * htim_base)502 void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
503 {
504   if(htim_base->Instance==TIM1)
505   {
506   /* USER CODE BEGIN TIM1_MspInit 0 */
507 
508   /* USER CODE END TIM1_MspInit 0 */
509     /* Peripheral clock enable */
510     __HAL_RCC_TIM1_CLK_ENABLE();
511   /* USER CODE BEGIN TIM1_MspInit 1 */
512 
513   /* USER CODE END TIM1_MspInit 1 */
514   }
515 
516 }
517 
518 /**
519 * @brief TIM_Base MSP De-Initialization
520 * This function freeze the hardware resources used in this example
521 * @param htim_base: TIM_Base handle pointer
522 * @retval None
523 */
HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef * htim_base)524 void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)
525 {
526   if(htim_base->Instance==TIM1)
527   {
528   /* USER CODE BEGIN TIM1_MspDeInit 0 */
529 
530   /* USER CODE END TIM1_MspDeInit 0 */
531     /* Peripheral clock disable */
532     __HAL_RCC_TIM1_CLK_DISABLE();
533   /* USER CODE BEGIN TIM1_MspDeInit 1 */
534 
535   /* USER CODE END TIM1_MspDeInit 1 */
536   }
537 
538 }
539 
540 /**
541 * @brief UART MSP Initialization
542 * This function configures the hardware resources used in this example
543 * @param huart: UART handle pointer
544 * @retval None
545 */
HAL_UART_MspInit(UART_HandleTypeDef * huart)546 void HAL_UART_MspInit(UART_HandleTypeDef* huart)
547 {
548   GPIO_InitTypeDef GPIO_InitStruct = {0};
549   if(huart->Instance==USART1)
550   {
551   /* USER CODE BEGIN USART1_MspInit 0 */
552 
553   /* USER CODE END USART1_MspInit 0 */
554     /* Peripheral clock enable */
555     __HAL_RCC_USART1_CLK_ENABLE();
556 
557     __HAL_RCC_GPIOA_CLK_ENABLE();
558     /**USART1 GPIO Configuration
559     PA9     ------> USART1_TX
560     PA10     ------> USART1_RX
561     */
562     GPIO_InitStruct.Pin = STLINK_RX_Pin|STLINK_TX_Pin;
563     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
564     GPIO_InitStruct.Pull = GPIO_PULLUP;
565     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
566     GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
567     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
568 
569   /* USER CODE BEGIN USART1_MspInit 1 */
570 
571   /* USER CODE END USART1_MspInit 1 */
572   }
573 
574 }
575 
576 /**
577 * @brief UART MSP De-Initialization
578 * This function freeze the hardware resources used in this example
579 * @param huart: UART handle pointer
580 * @retval None
581 */
HAL_UART_MspDeInit(UART_HandleTypeDef * huart)582 void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
583 {
584   if(huart->Instance==USART1)
585   {
586   /* USER CODE BEGIN USART1_MspDeInit 0 */
587 
588   /* USER CODE END USART1_MspDeInit 0 */
589     /* Peripheral clock disable */
590     __HAL_RCC_USART1_CLK_DISABLE();
591 
592     /**USART1 GPIO Configuration
593     PA9     ------> USART1_TX
594     PA10     ------> USART1_RX
595     */
596     HAL_GPIO_DeInit(GPIOA, STLINK_RX_Pin|STLINK_TX_Pin);
597 
598   /* USER CODE BEGIN USART1_MspDeInit 1 */
599 
600   /* USER CODE END USART1_MspDeInit 1 */
601   }
602 
603 }
604 
605 static uint32_t FMC_Initialized = 0;
606 
HAL_FMC_MspInit(void)607 static void HAL_FMC_MspInit(void){
608   /* USER CODE BEGIN FMC_MspInit 0 */
609 
610   /* USER CODE END FMC_MspInit 0 */
611   GPIO_InitTypeDef GPIO_InitStruct ={0};
612   if (FMC_Initialized) {
613     return;
614   }
615   FMC_Initialized = 1;
616   /* Peripheral clock enable */
617   __HAL_RCC_FMC_CLK_ENABLE();
618 
619   /** FMC GPIO Configuration
620   PF0   ------> FMC_A0
621   PF1   ------> FMC_A1
622   PF2   ------> FMC_A2
623   PF3   ------> FMC_A3
624   PF4   ------> FMC_A4
625   PF5   ------> FMC_A5
626   PC0   ------> FMC_SDNWE
627   PF11   ------> FMC_SDNRAS
628   PF12   ------> FMC_A6
629   PF13   ------> FMC_A7
630   PF14   ------> FMC_A8
631   PF15   ------> FMC_A9
632   PG0   ------> FMC_A10
633   PG1   ------> FMC_A11
634   PE7   ------> FMC_D4
635   PE8   ------> FMC_D5
636   PE9   ------> FMC_D6
637   PE10   ------> FMC_D7
638   PE11   ------> FMC_D8
639   PE12   ------> FMC_D9
640   PE13   ------> FMC_D10
641   PE14   ------> FMC_D11
642   PE15   ------> FMC_D12
643   PD8   ------> FMC_D13
644   PD9   ------> FMC_D14
645   PD10   ------> FMC_D15
646   PD14   ------> FMC_D0
647   PD15   ------> FMC_D1
648   PG4   ------> FMC_BA0
649   PG5   ------> FMC_BA1
650   PG8   ------> FMC_SDCLK
651   PD0   ------> FMC_D2
652   PD1   ------> FMC_D3
653   PG15   ------> FMC_SDNCAS
654   PB5   ------> FMC_SDCKE1
655   PB6   ------> FMC_SDNE1
656   PE0   ------> FMC_NBL0
657   PE1   ------> FMC_NBL1
658   */
659   GPIO_InitStruct.Pin = A0_Pin|A1_Pin|A2_Pin|A3_Pin
660                           |A4_Pin|A5_Pin|SDNRAS_Pin|A6_Pin
661                           |A7_Pin|A8_Pin|A9_Pin;
662   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
663   GPIO_InitStruct.Pull = GPIO_NOPULL;
664   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
665   GPIO_InitStruct.Alternate = GPIO_AF12_FMC;
666   HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
667 
668   GPIO_InitStruct.Pin = SDNWE_Pin;
669   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
670   GPIO_InitStruct.Pull = GPIO_NOPULL;
671   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
672   GPIO_InitStruct.Alternate = GPIO_AF12_FMC;
673   HAL_GPIO_Init(SDNWE_GPIO_Port, &GPIO_InitStruct);
674 
675   GPIO_InitStruct.Pin = A10_Pin|A11_Pin|BA0_Pin|BA1_Pin
676                           |SDCLK_Pin|SDNCAS_Pin;
677   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
678   GPIO_InitStruct.Pull = GPIO_NOPULL;
679   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
680   GPIO_InitStruct.Alternate = GPIO_AF12_FMC;
681   HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
682 
683   GPIO_InitStruct.Pin = D4_Pin|D5_Pin|D6_Pin|D7_Pin
684                           |D8_Pin|D9_Pin|D10_Pin|D11_Pin
685                           |D12_Pin|NBL0_Pin|NBL1_Pin;
686   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
687   GPIO_InitStruct.Pull = GPIO_NOPULL;
688   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
689   GPIO_InitStruct.Alternate = GPIO_AF12_FMC;
690   HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
691 
692   GPIO_InitStruct.Pin = D13_Pin|D14_Pin|D15_Pin|D0_Pin
693                           |D1_Pin|D2_Pin|D3_Pin;
694   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
695   GPIO_InitStruct.Pull = GPIO_NOPULL;
696   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
697   GPIO_InitStruct.Alternate = GPIO_AF12_FMC;
698   HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
699 
700   GPIO_InitStruct.Pin = SDCKE1_Pin|SDNE1_Pin;
701   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
702   GPIO_InitStruct.Pull = GPIO_NOPULL;
703   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
704   GPIO_InitStruct.Alternate = GPIO_AF12_FMC;
705   HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
706 
707   /* USER CODE BEGIN FMC_MspInit 1 */
708 
709   /* USER CODE END FMC_MspInit 1 */
710 }
711 
HAL_SDRAM_MspInit(SDRAM_HandleTypeDef * hsdram)712 void HAL_SDRAM_MspInit(SDRAM_HandleTypeDef* hsdram){
713   /* USER CODE BEGIN SDRAM_MspInit 0 */
714 
715   /* USER CODE END SDRAM_MspInit 0 */
716   HAL_FMC_MspInit();
717   /* USER CODE BEGIN SDRAM_MspInit 1 */
718 
719   /* USER CODE END SDRAM_MspInit 1 */
720 }
721 
722 static uint32_t FMC_DeInitialized = 0;
723 
HAL_FMC_MspDeInit(void)724 static void HAL_FMC_MspDeInit(void){
725   /* USER CODE BEGIN FMC_MspDeInit 0 */
726 
727   /* USER CODE END FMC_MspDeInit 0 */
728   if (FMC_DeInitialized) {
729     return;
730   }
731   FMC_DeInitialized = 1;
732   /* Peripheral clock enable */
733   __HAL_RCC_FMC_CLK_DISABLE();
734 
735   /** FMC GPIO Configuration
736   PF0   ------> FMC_A0
737   PF1   ------> FMC_A1
738   PF2   ------> FMC_A2
739   PF3   ------> FMC_A3
740   PF4   ------> FMC_A4
741   PF5   ------> FMC_A5
742   PC0   ------> FMC_SDNWE
743   PF11   ------> FMC_SDNRAS
744   PF12   ------> FMC_A6
745   PF13   ------> FMC_A7
746   PF14   ------> FMC_A8
747   PF15   ------> FMC_A9
748   PG0   ------> FMC_A10
749   PG1   ------> FMC_A11
750   PE7   ------> FMC_D4
751   PE8   ------> FMC_D5
752   PE9   ------> FMC_D6
753   PE10   ------> FMC_D7
754   PE11   ------> FMC_D8
755   PE12   ------> FMC_D9
756   PE13   ------> FMC_D10
757   PE14   ------> FMC_D11
758   PE15   ------> FMC_D12
759   PD8   ------> FMC_D13
760   PD9   ------> FMC_D14
761   PD10   ------> FMC_D15
762   PD14   ------> FMC_D0
763   PD15   ------> FMC_D1
764   PG4   ------> FMC_BA0
765   PG5   ------> FMC_BA1
766   PG8   ------> FMC_SDCLK
767   PD0   ------> FMC_D2
768   PD1   ------> FMC_D3
769   PG15   ------> FMC_SDNCAS
770   PB5   ------> FMC_SDCKE1
771   PB6   ------> FMC_SDNE1
772   PE0   ------> FMC_NBL0
773   PE1   ------> FMC_NBL1
774   */
775   HAL_GPIO_DeInit(GPIOF, A0_Pin|A1_Pin|A2_Pin|A3_Pin
776                           |A4_Pin|A5_Pin|SDNRAS_Pin|A6_Pin
777                           |A7_Pin|A8_Pin|A9_Pin);
778 
779   HAL_GPIO_DeInit(SDNWE_GPIO_Port, SDNWE_Pin);
780 
781   HAL_GPIO_DeInit(GPIOG, A10_Pin|A11_Pin|BA0_Pin|BA1_Pin
782                           |SDCLK_Pin|SDNCAS_Pin);
783 
784   HAL_GPIO_DeInit(GPIOE, D4_Pin|D5_Pin|D6_Pin|D7_Pin
785                           |D8_Pin|D9_Pin|D10_Pin|D11_Pin
786                           |D12_Pin|NBL0_Pin|NBL1_Pin);
787 
788   HAL_GPIO_DeInit(GPIOD, D13_Pin|D14_Pin|D15_Pin|D0_Pin
789                           |D1_Pin|D2_Pin|D3_Pin);
790 
791   HAL_GPIO_DeInit(GPIOB, SDCKE1_Pin|SDNE1_Pin);
792 
793   /* USER CODE BEGIN FMC_MspDeInit 1 */
794 
795   /* USER CODE END FMC_MspDeInit 1 */
796 }
797 
HAL_SDRAM_MspDeInit(SDRAM_HandleTypeDef * hsdram)798 void HAL_SDRAM_MspDeInit(SDRAM_HandleTypeDef* hsdram){
799   /* USER CODE BEGIN SDRAM_MspDeInit 0 */
800 
801   /* USER CODE END SDRAM_MspDeInit 0 */
802   HAL_FMC_MspDeInit();
803   /* USER CODE BEGIN SDRAM_MspDeInit 1 */
804 
805   /* USER CODE END SDRAM_MspDeInit 1 */
806 }
807 
808 /* USER CODE BEGIN 1 */
809 
810 /* USER CODE END 1 */
811 
812 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
813