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   * 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_SYSCFG_CLK_ENABLE();
91   __HAL_RCC_PWR_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 DMA2D MSP Initialization
102 * This function configures the hardware resources used in this example
103 * @param hdma2d: DMA2D handle pointer
104 * @retval None
105 */
HAL_DMA2D_MspInit(DMA2D_HandleTypeDef * hdma2d)106 void HAL_DMA2D_MspInit(DMA2D_HandleTypeDef* hdma2d)
107 {
108 
109   if(hdma2d->Instance==DMA2D)
110   {
111   /* USER CODE BEGIN DMA2D_MspInit 0 */
112 
113   /* USER CODE END DMA2D_MspInit 0 */
114     /* Peripheral clock enable */
115     __HAL_RCC_DMA2D_CLK_ENABLE();
116   /* USER CODE BEGIN DMA2D_MspInit 1 */
117 
118   /* USER CODE END DMA2D_MspInit 1 */
119   }
120 
121 }
122 
123 /**
124 * @brief DMA2D MSP De-Initialization
125 * This function freeze the hardware resources used in this example
126 * @param hdma2d: DMA2D handle pointer
127 * @retval None
128 */
129 
HAL_DMA2D_MspDeInit(DMA2D_HandleTypeDef * hdma2d)130 void HAL_DMA2D_MspDeInit(DMA2D_HandleTypeDef* hdma2d)
131 {
132 
133   if(hdma2d->Instance==DMA2D)
134   {
135   /* USER CODE BEGIN DMA2D_MspDeInit 0 */
136 
137   /* USER CODE END DMA2D_MspDeInit 0 */
138     /* Peripheral clock disable */
139     __HAL_RCC_DMA2D_CLK_DISABLE();
140   /* USER CODE BEGIN DMA2D_MspDeInit 1 */
141 
142   /* USER CODE END DMA2D_MspDeInit 1 */
143   }
144 
145 }
146 
147 /**
148 * @brief DSI MSP Initialization
149 * This function configures the hardware resources used in this example
150 * @param hdsi: DSI handle pointer
151 * @retval None
152 */
HAL_DSI_MspInit(DSI_HandleTypeDef * hdsi)153 void HAL_DSI_MspInit(DSI_HandleTypeDef* hdsi)
154 {
155 
156   if(hdsi->Instance==DSI)
157   {
158   /* USER CODE BEGIN DSI_MspInit 0 */
159 
160   /* USER CODE END DSI_MspInit 0 */
161     /* Peripheral clock enable */
162     __HAL_RCC_DSI_CLK_ENABLE();
163   /* USER CODE BEGIN DSI_MspInit 1 */
164 
165   /* USER CODE END DSI_MspInit 1 */
166   }
167 
168 }
169 
170 /**
171 * @brief DSI MSP De-Initialization
172 * This function freeze the hardware resources used in this example
173 * @param hdsi: DSI handle pointer
174 * @retval None
175 */
176 
HAL_DSI_MspDeInit(DSI_HandleTypeDef * hdsi)177 void HAL_DSI_MspDeInit(DSI_HandleTypeDef* hdsi)
178 {
179 
180   if(hdsi->Instance==DSI)
181   {
182   /* USER CODE BEGIN DSI_MspDeInit 0 */
183 
184   /* USER CODE END DSI_MspDeInit 0 */
185     /* Peripheral clock disable */
186     __HAL_RCC_DSI_CLK_DISABLE();
187   /* USER CODE BEGIN DSI_MspDeInit 1 */
188 
189   /* USER CODE END DSI_MspDeInit 1 */
190   }
191 
192 }
193 
194 /**
195 * @brief GFXMMU MSP Initialization
196 * This function configures the hardware resources used in this example
197 * @param hgfxmmu: GFXMMU handle pointer
198 * @retval None
199 */
HAL_GFXMMU_MspInit(GFXMMU_HandleTypeDef * hgfxmmu)200 void HAL_GFXMMU_MspInit(GFXMMU_HandleTypeDef* hgfxmmu)
201 {
202 
203   if(hgfxmmu->Instance==GFXMMU)
204   {
205   /* USER CODE BEGIN GFXMMU_MspInit 0 */
206 
207   /* USER CODE END GFXMMU_MspInit 0 */
208     /* Peripheral clock enable */
209     __HAL_RCC_GFXMMU_CLK_ENABLE();
210   /* USER CODE BEGIN GFXMMU_MspInit 1 */
211 
212   /* USER CODE END GFXMMU_MspInit 1 */
213   }
214 
215 }
216 
217 /**
218 * @brief GFXMMU MSP De-Initialization
219 * This function freeze the hardware resources used in this example
220 * @param hgfxmmu: GFXMMU handle pointer
221 * @retval None
222 */
223 
HAL_GFXMMU_MspDeInit(GFXMMU_HandleTypeDef * hgfxmmu)224 void HAL_GFXMMU_MspDeInit(GFXMMU_HandleTypeDef* hgfxmmu)
225 {
226 
227   if(hgfxmmu->Instance==GFXMMU)
228   {
229   /* USER CODE BEGIN GFXMMU_MspDeInit 0 */
230 
231   /* USER CODE END GFXMMU_MspDeInit 0 */
232     /* Peripheral clock disable */
233     __HAL_RCC_GFXMMU_CLK_DISABLE();
234   /* USER CODE BEGIN GFXMMU_MspDeInit 1 */
235 
236   /* USER CODE END GFXMMU_MspDeInit 1 */
237   }
238 
239 }
240 
241 /**
242 * @brief LTDC MSP Initialization
243 * This function configures the hardware resources used in this example
244 * @param hltdc: LTDC handle pointer
245 * @retval None
246 */
HAL_LTDC_MspInit(LTDC_HandleTypeDef * hltdc)247 void HAL_LTDC_MspInit(LTDC_HandleTypeDef* hltdc)
248 {
249 
250   if(hltdc->Instance==LTDC)
251   {
252   /* USER CODE BEGIN LTDC_MspInit 0 */
253 
254   /* USER CODE END LTDC_MspInit 0 */
255     /* Peripheral clock enable */
256     __HAL_RCC_LTDC_CLK_ENABLE();
257   /* USER CODE BEGIN LTDC_MspInit 1 */
258 
259   /* USER CODE END LTDC_MspInit 1 */
260   }
261 
262 }
263 
264 /**
265 * @brief LTDC MSP De-Initialization
266 * This function freeze the hardware resources used in this example
267 * @param hltdc: LTDC handle pointer
268 * @retval None
269 */
270 
HAL_LTDC_MspDeInit(LTDC_HandleTypeDef * hltdc)271 void HAL_LTDC_MspDeInit(LTDC_HandleTypeDef* hltdc)
272 {
273 
274   if(hltdc->Instance==LTDC)
275   {
276   /* USER CODE BEGIN LTDC_MspDeInit 0 */
277 
278   /* USER CODE END LTDC_MspDeInit 0 */
279     /* Peripheral clock disable */
280     __HAL_RCC_LTDC_CLK_DISABLE();
281   /* USER CODE BEGIN LTDC_MspDeInit 1 */
282 
283   /* USER CODE END LTDC_MspDeInit 1 */
284   }
285 
286 }
287 
288 /**
289 * @brief UART MSP Initialization
290 * This function configures the hardware resources used in this example
291 * @param huart: UART handle pointer
292 * @retval None
293 */
HAL_UART_MspInit(UART_HandleTypeDef * huart)294 void HAL_UART_MspInit(UART_HandleTypeDef* huart)
295 {
296 
297   GPIO_InitTypeDef GPIO_InitStruct = {0};
298   if(huart->Instance==USART3)
299   {
300   /* USER CODE BEGIN USART3_MspInit 0 */
301 
302   /* USER CODE END USART3_MspInit 0 */
303     /* Peripheral clock enable */
304     __HAL_RCC_USART3_CLK_ENABLE();
305 
306     __HAL_RCC_GPIOB_CLK_ENABLE();
307     /**USART3 GPIO Configuration
308     PB11     ------> USART3_RX
309     PB10     ------> USART3_TX
310     */
311     GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_10;
312     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
313     GPIO_InitStruct.Pull = GPIO_PULLUP;
314     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
315     GPIO_InitStruct.Alternate = GPIO_AF7_USART3;
316     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
317 
318   /* USER CODE BEGIN USART3_MspInit 1 */
319 
320   /* USER CODE END USART3_MspInit 1 */
321   }
322 
323 }
324 
325 /**
326 * @brief UART MSP De-Initialization
327 * This function freeze the hardware resources used in this example
328 * @param huart: UART handle pointer
329 * @retval None
330 */
331 
HAL_UART_MspDeInit(UART_HandleTypeDef * huart)332 void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
333 {
334 
335   if(huart->Instance==USART3)
336   {
337   /* USER CODE BEGIN USART3_MspDeInit 0 */
338 
339   /* USER CODE END USART3_MspDeInit 0 */
340     /* Peripheral clock disable */
341     __HAL_RCC_USART3_CLK_DISABLE();
342 
343     /**USART3 GPIO Configuration
344     PB11     ------> USART3_RX
345     PB10     ------> USART3_TX
346     */
347     HAL_GPIO_DeInit(GPIOB, GPIO_PIN_11|GPIO_PIN_10);
348 
349   /* USER CODE BEGIN USART3_MspDeInit 1 */
350 
351   /* USER CODE END USART3_MspDeInit 1 */
352   }
353 
354 }
355 
356 static uint32_t FMC_Initialized = 0;
357 
HAL_FMC_MspInit(void)358 static void HAL_FMC_MspInit(void){
359   /* USER CODE BEGIN FMC_MspInit 0 */
360 
361   /* USER CODE END FMC_MspInit 0 */
362   GPIO_InitTypeDef GPIO_InitStruct;
363   if (FMC_Initialized) {
364     return;
365   }
366   FMC_Initialized = 1;
367   /* Peripheral clock enable */
368   __HAL_RCC_FMC_CLK_ENABLE();
369 
370   /** FMC GPIO Configuration
371   PE0   ------> FMC_NBL0
372   PE1   ------> FMC_NBL1
373   PD0   ------> FMC_D2
374   PD4   ------> FMC_NOE
375   PD1   ------> FMC_D3
376   PE4   ------> FMC_A20
377   PE3   ------> FMC_A19
378   PD5   ------> FMC_NWE
379   PE5   ------> FMC_A21
380   PF2   ------> FMC_A2
381   PF1   ------> FMC_A1
382   PF0   ------> FMC_A0
383   PD7   ------> FMC_NE1
384   PF3   ------> FMC_A3
385   PF4   ------> FMC_A4
386   PF5   ------> FMC_A5
387   PG4   ------> FMC_A14
388   PG3   ------> FMC_A13
389   PG5   ------> FMC_A15
390   PG1   ------> FMC_A11
391   PE10   ------> FMC_D7
392   PD13   ------> FMC_A18
393   PG2   ------> FMC_A12
394   PD15   ------> FMC_D1
395   PD14   ------> FMC_D0
396   PG0   ------> FMC_A10
397   PE9   ------> FMC_D6
398   PE15   ------> FMC_D12
399   PD12   ------> FMC_A17
400   PD11   ------> FMC_A16
401   PD10   ------> FMC_D15
402   PF15   ------> FMC_A9
403   PE8   ------> FMC_D5
404   PE14   ------> FMC_D11
405   PD9   ------> FMC_D14
406   PD8   ------> FMC_D13
407   PF14   ------> FMC_A8
408   PE7   ------> FMC_D4
409   PE13   ------> FMC_D10
410   PF13   ------> FMC_A7
411   PE12   ------> FMC_D9
412   PF12   ------> FMC_A6
413   PE11   ------> FMC_D8
414   */
415   GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_3
416                           |GPIO_PIN_5|GPIO_PIN_10|GPIO_PIN_9|GPIO_PIN_15
417                           |GPIO_PIN_8|GPIO_PIN_14|GPIO_PIN_7|GPIO_PIN_13
418                           |GPIO_PIN_12|GPIO_PIN_11;
419   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
420   GPIO_InitStruct.Pull = GPIO_NOPULL;
421   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
422   GPIO_InitStruct.Alternate = GPIO_AF12_FMC;
423   HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
424 
425   GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_4|GPIO_PIN_1|GPIO_PIN_5
426                           |GPIO_PIN_7|GPIO_PIN_13|GPIO_PIN_15|GPIO_PIN_14
427                           |GPIO_PIN_12|GPIO_PIN_11|GPIO_PIN_10|GPIO_PIN_9
428                           |GPIO_PIN_8;
429   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
430   GPIO_InitStruct.Pull = GPIO_NOPULL;
431   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
432   GPIO_InitStruct.Alternate = GPIO_AF12_FMC;
433   HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
434 
435   GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_1|GPIO_PIN_0|GPIO_PIN_3
436                           |GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_15|GPIO_PIN_14
437                           |GPIO_PIN_13|GPIO_PIN_12;
438   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
439   GPIO_InitStruct.Pull = GPIO_NOPULL;
440   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
441   GPIO_InitStruct.Alternate = GPIO_AF12_FMC;
442   HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
443 
444   GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_3|GPIO_PIN_5|GPIO_PIN_1
445                           |GPIO_PIN_2|GPIO_PIN_0;
446   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
447   GPIO_InitStruct.Pull = GPIO_NOPULL;
448   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
449   GPIO_InitStruct.Alternate = GPIO_AF12_FMC;
450   HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
451 
452   /* USER CODE BEGIN FMC_MspInit 1 */
453 
454   /* USER CODE END FMC_MspInit 1 */
455 }
456 
HAL_SRAM_MspInit(SRAM_HandleTypeDef * hsram)457 void HAL_SRAM_MspInit(SRAM_HandleTypeDef* hsram){
458   /* USER CODE BEGIN SRAM_MspInit 0 */
459 
460   /* USER CODE END SRAM_MspInit 0 */
461   HAL_FMC_MspInit();
462   /* USER CODE BEGIN SRAM_MspInit 1 */
463 
464   /* USER CODE END SRAM_MspInit 1 */
465 }
466 
467 static uint32_t FMC_DeInitialized = 0;
468 
HAL_FMC_MspDeInit(void)469 static void HAL_FMC_MspDeInit(void){
470   /* USER CODE BEGIN FMC_MspDeInit 0 */
471 
472   /* USER CODE END FMC_MspDeInit 0 */
473   if (FMC_DeInitialized) {
474     return;
475   }
476   FMC_DeInitialized = 1;
477   /* Peripheral clock enable */
478   __HAL_RCC_FMC_CLK_DISABLE();
479 
480   /** FMC GPIO Configuration
481   PE0   ------> FMC_NBL0
482   PE1   ------> FMC_NBL1
483   PD0   ------> FMC_D2
484   PD4   ------> FMC_NOE
485   PD1   ------> FMC_D3
486   PE4   ------> FMC_A20
487   PE3   ------> FMC_A19
488   PD5   ------> FMC_NWE
489   PE5   ------> FMC_A21
490   PF2   ------> FMC_A2
491   PF1   ------> FMC_A1
492   PF0   ------> FMC_A0
493   PD7   ------> FMC_NE1
494   PF3   ------> FMC_A3
495   PF4   ------> FMC_A4
496   PF5   ------> FMC_A5
497   PG4   ------> FMC_A14
498   PG3   ------> FMC_A13
499   PG5   ------> FMC_A15
500   PG1   ------> FMC_A11
501   PE10   ------> FMC_D7
502   PD13   ------> FMC_A18
503   PG2   ------> FMC_A12
504   PD15   ------> FMC_D1
505   PD14   ------> FMC_D0
506   PG0   ------> FMC_A10
507   PE9   ------> FMC_D6
508   PE15   ------> FMC_D12
509   PD12   ------> FMC_A17
510   PD11   ------> FMC_A16
511   PD10   ------> FMC_D15
512   PF15   ------> FMC_A9
513   PE8   ------> FMC_D5
514   PE14   ------> FMC_D11
515   PD9   ------> FMC_D14
516   PD8   ------> FMC_D13
517   PF14   ------> FMC_A8
518   PE7   ------> FMC_D4
519   PE13   ------> FMC_D10
520   PF13   ------> FMC_A7
521   PE12   ------> FMC_D9
522   PF12   ------> FMC_A6
523   PE11   ------> FMC_D8
524   */
525   HAL_GPIO_DeInit(GPIOE, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_3
526                           |GPIO_PIN_5|GPIO_PIN_10|GPIO_PIN_9|GPIO_PIN_15
527                           |GPIO_PIN_8|GPIO_PIN_14|GPIO_PIN_7|GPIO_PIN_13
528                           |GPIO_PIN_12|GPIO_PIN_11);
529 
530   HAL_GPIO_DeInit(GPIOD, GPIO_PIN_0|GPIO_PIN_4|GPIO_PIN_1|GPIO_PIN_5
531                           |GPIO_PIN_7|GPIO_PIN_13|GPIO_PIN_15|GPIO_PIN_14
532                           |GPIO_PIN_12|GPIO_PIN_11|GPIO_PIN_10|GPIO_PIN_9
533                           |GPIO_PIN_8);
534 
535   HAL_GPIO_DeInit(GPIOF, GPIO_PIN_2|GPIO_PIN_1|GPIO_PIN_0|GPIO_PIN_3
536                           |GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_15|GPIO_PIN_14
537                           |GPIO_PIN_13|GPIO_PIN_12);
538 
539   HAL_GPIO_DeInit(GPIOG, GPIO_PIN_4|GPIO_PIN_3|GPIO_PIN_5|GPIO_PIN_1
540                           |GPIO_PIN_2|GPIO_PIN_0);
541 
542   /* USER CODE BEGIN FMC_MspDeInit 1 */
543 
544   /* USER CODE END FMC_MspDeInit 1 */
545 }
546 
HAL_SRAM_MspDeInit(SRAM_HandleTypeDef * hsram)547 void HAL_SRAM_MspDeInit(SRAM_HandleTypeDef* hsram){
548   /* USER CODE BEGIN SRAM_MspDeInit 0 */
549 
550   /* USER CODE END SRAM_MspDeInit 0 */
551   HAL_FMC_MspDeInit();
552   /* USER CODE BEGIN SRAM_MspDeInit 1 */
553 
554   /* USER CODE END SRAM_MspDeInit 1 */
555 }
556 
557 /* USER CODE BEGIN 1 */
558 
559 /* USER CODE END 1 */
560 
561 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
562