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   ** 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   HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_0);
96 
97   /* System interrupt init*/
98 
99   /* USER CODE BEGIN MspInit 1 */
100 
101   /* USER CODE END MspInit 1 */
102 }
103 
104 /**
105 * @brief ADC MSP Initialization
106 * This function configures the hardware resources used in this example
107 * @param hadc: ADC handle pointer
108 * @retval None
109 */
HAL_ADC_MspInit(ADC_HandleTypeDef * hadc)110 void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
111 {
112   GPIO_InitTypeDef GPIO_InitStruct = {0};
113   if(hadc->Instance==ADC1)
114   {
115   /* USER CODE BEGIN ADC1_MspInit 0 */
116 
117   /* USER CODE END ADC1_MspInit 0 */
118     /* Peripheral clock enable */
119     __HAL_RCC_ADC1_CLK_ENABLE();
120 
121     __HAL_RCC_GPIOC_CLK_ENABLE();
122     __HAL_RCC_GPIOA_CLK_ENABLE();
123     __HAL_RCC_GPIOB_CLK_ENABLE();
124     /**ADC1 GPIO Configuration
125     PC0     ------> ADC1_IN10
126     PC1     ------> ADC1_IN11
127     PA0-WKUP     ------> ADC1_IN0
128     PA1     ------> ADC1_IN1
129     PA4     ------> ADC1_IN4
130     PB0     ------> ADC1_IN8
131     */
132     GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1;
133     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
134     GPIO_InitStruct.Pull = GPIO_NOPULL;
135     HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
136 
137     GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_4;
138     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
139     GPIO_InitStruct.Pull = GPIO_NOPULL;
140     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
141 
142     GPIO_InitStruct.Pin = GPIO_PIN_0;
143     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
144     GPIO_InitStruct.Pull = GPIO_NOPULL;
145     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
146 
147   /* USER CODE BEGIN ADC1_MspInit 1 */
148 
149   /* USER CODE END ADC1_MspInit 1 */
150   }
151 
152 }
153 
154 /**
155 * @brief ADC MSP De-Initialization
156 * This function freeze the hardware resources used in this example
157 * @param hadc: ADC handle pointer
158 * @retval None
159 */
HAL_ADC_MspDeInit(ADC_HandleTypeDef * hadc)160 void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc)
161 {
162   if(hadc->Instance==ADC1)
163   {
164   /* USER CODE BEGIN ADC1_MspDeInit 0 */
165 
166   /* USER CODE END ADC1_MspDeInit 0 */
167     /* Peripheral clock disable */
168     __HAL_RCC_ADC1_CLK_DISABLE();
169 
170     /**ADC1 GPIO Configuration
171     PC0     ------> ADC1_IN10
172     PC1     ------> ADC1_IN11
173     PA0-WKUP     ------> ADC1_IN0
174     PA1     ------> ADC1_IN1
175     PA4     ------> ADC1_IN4
176     PB0     ------> ADC1_IN8
177     */
178     HAL_GPIO_DeInit(GPIOC, GPIO_PIN_0|GPIO_PIN_1);
179 
180     HAL_GPIO_DeInit(GPIOA, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_4);
181 
182     HAL_GPIO_DeInit(GPIOB, GPIO_PIN_0);
183 
184   /* USER CODE BEGIN ADC1_MspDeInit 1 */
185 
186   /* USER CODE END ADC1_MspDeInit 1 */
187   }
188 
189 }
190 
191 /**
192 * @brief RTC MSP Initialization
193 * This function configures the hardware resources used in this example
194 * @param hrtc: RTC handle pointer
195 * @retval None
196 */
HAL_RTC_MspInit(RTC_HandleTypeDef * hrtc)197 void HAL_RTC_MspInit(RTC_HandleTypeDef* hrtc)
198 {
199   RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
200   if(hrtc->Instance==RTC)
201   {
202   /* USER CODE BEGIN RTC_MspInit 0 */
203 
204   /* USER CODE END RTC_MspInit 0 */
205 
206   /** Initializes the peripherals clock
207   */
208     PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC;
209     PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSI;
210     if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
211     {
212       Error_Handler();
213     }
214 
215     /* Peripheral clock enable */
216     __HAL_RCC_RTC_ENABLE();
217   /* USER CODE BEGIN RTC_MspInit 1 */
218 
219   /* USER CODE END RTC_MspInit 1 */
220   }
221 
222 }
223 
224 /**
225 * @brief RTC MSP De-Initialization
226 * This function freeze the hardware resources used in this example
227 * @param hrtc: RTC handle pointer
228 * @retval None
229 */
HAL_RTC_MspDeInit(RTC_HandleTypeDef * hrtc)230 void HAL_RTC_MspDeInit(RTC_HandleTypeDef* hrtc)
231 {
232   if(hrtc->Instance==RTC)
233   {
234   /* USER CODE BEGIN RTC_MspDeInit 0 */
235 
236   /* USER CODE END RTC_MspDeInit 0 */
237     /* Peripheral clock disable */
238     __HAL_RCC_RTC_DISABLE();
239   /* USER CODE BEGIN RTC_MspDeInit 1 */
240 
241   /* USER CODE END RTC_MspDeInit 1 */
242   }
243 
244 }
245 
246 /**
247 * @brief SPI MSP Initialization
248 * This function configures the hardware resources used in this example
249 * @param hspi: SPI handle pointer
250 * @retval None
251 */
HAL_SPI_MspInit(SPI_HandleTypeDef * hspi)252 void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
253 {
254   GPIO_InitTypeDef GPIO_InitStruct = {0};
255   if(hspi->Instance==SPI3)
256   {
257   /* USER CODE BEGIN SPI3_MspInit 0 */
258 
259   /* USER CODE END SPI3_MspInit 0 */
260     /* Peripheral clock enable */
261     __HAL_RCC_SPI3_CLK_ENABLE();
262 
263     __HAL_RCC_GPIOB_CLK_ENABLE();
264     __HAL_RCC_GPIOC_CLK_ENABLE();
265     /**SPI3 GPIO Configuration
266     PB12     ------> SPI3_SCK
267     PC11     ------> SPI3_MISO
268     PC12     ------> SPI3_MOSI
269     */
270     GPIO_InitStruct.Pin = GPIO_PIN_12;
271     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
272     GPIO_InitStruct.Pull = GPIO_NOPULL;
273     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
274     GPIO_InitStruct.Alternate = GPIO_AF7_SPI3;
275     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
276 
277     GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12;
278     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
279     GPIO_InitStruct.Pull = GPIO_NOPULL;
280     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
281     GPIO_InitStruct.Alternate = GPIO_AF6_SPI3;
282     HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
283 
284   /* USER CODE BEGIN SPI3_MspInit 1 */
285 
286   /* USER CODE END SPI3_MspInit 1 */
287   }
288 
289 }
290 
291 /**
292 * @brief SPI MSP De-Initialization
293 * This function freeze the hardware resources used in this example
294 * @param hspi: SPI handle pointer
295 * @retval None
296 */
HAL_SPI_MspDeInit(SPI_HandleTypeDef * hspi)297 void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi)
298 {
299   if(hspi->Instance==SPI3)
300   {
301   /* USER CODE BEGIN SPI3_MspDeInit 0 */
302 
303   /* USER CODE END SPI3_MspDeInit 0 */
304     /* Peripheral clock disable */
305     __HAL_RCC_SPI3_CLK_DISABLE();
306 
307     /**SPI3 GPIO Configuration
308     PB12     ------> SPI3_SCK
309     PC11     ------> SPI3_MISO
310     PC12     ------> SPI3_MOSI
311     */
312     HAL_GPIO_DeInit(GPIOB, GPIO_PIN_12);
313 
314     HAL_GPIO_DeInit(GPIOC, GPIO_PIN_11|GPIO_PIN_12);
315 
316   /* USER CODE BEGIN SPI3_MspDeInit 1 */
317 
318   /* USER CODE END SPI3_MspDeInit 1 */
319   }
320 
321 }
322 
323 /**
324 * @brief TIM_Base MSP Initialization
325 * This function configures the hardware resources used in this example
326 * @param htim_base: TIM_Base handle pointer
327 * @retval None
328 */
HAL_TIM_Base_MspInit(TIM_HandleTypeDef * htim_base)329 void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
330 {
331   if(htim_base->Instance==TIM1)
332   {
333   /* USER CODE BEGIN TIM1_MspInit 0 */
334 
335   /* USER CODE END TIM1_MspInit 0 */
336     /* Peripheral clock enable */
337     __HAL_RCC_TIM1_CLK_ENABLE();
338   /* USER CODE BEGIN TIM1_MspInit 1 */
339 
340   /* USER CODE END TIM1_MspInit 1 */
341   }
342   else if(htim_base->Instance==TIM2)
343   {
344   /* USER CODE BEGIN TIM2_MspInit 0 */
345 
346   /* USER CODE END TIM2_MspInit 0 */
347     /* Peripheral clock enable */
348     __HAL_RCC_TIM2_CLK_ENABLE();
349   /* USER CODE BEGIN TIM2_MspInit 1 */
350 
351   /* USER CODE END TIM2_MspInit 1 */
352   }
353   else if(htim_base->Instance==TIM3)
354   {
355   /* USER CODE BEGIN TIM3_MspInit 0 */
356 
357   /* USER CODE END TIM3_MspInit 0 */
358     /* Peripheral clock enable */
359     __HAL_RCC_TIM3_CLK_ENABLE();
360   /* USER CODE BEGIN TIM3_MspInit 1 */
361 
362   /* USER CODE END TIM3_MspInit 1 */
363   }
364   else if(htim_base->Instance==TIM4)
365   {
366   /* USER CODE BEGIN TIM4_MspInit 0 */
367 
368   /* USER CODE END TIM4_MspInit 0 */
369     /* Peripheral clock enable */
370     __HAL_RCC_TIM4_CLK_ENABLE();
371   /* USER CODE BEGIN TIM4_MspInit 1 */
372 
373   /* USER CODE END TIM4_MspInit 1 */
374   }
375   else if(htim_base->Instance==TIM9)
376   {
377   /* USER CODE BEGIN TIM9_MspInit 0 */
378 
379   /* USER CODE END TIM9_MspInit 0 */
380     /* Peripheral clock enable */
381     __HAL_RCC_TIM9_CLK_ENABLE();
382   /* USER CODE BEGIN TIM9_MspInit 1 */
383 
384   /* USER CODE END TIM9_MspInit 1 */
385   }
386 
387 }
388 
HAL_TIM_MspPostInit(TIM_HandleTypeDef * htim)389 void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim)
390 {
391   GPIO_InitTypeDef GPIO_InitStruct = {0};
392   if(htim->Instance==TIM1)
393   {
394   /* USER CODE BEGIN TIM1_MspPostInit 0 */
395 
396   /* USER CODE END TIM1_MspPostInit 0 */
397     __HAL_RCC_GPIOA_CLK_ENABLE();
398     /**TIM1 GPIO Configuration
399     PA7     ------> TIM1_CH1N
400     */
401     GPIO_InitStruct.Pin = GPIO_PIN_7;
402     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
403     GPIO_InitStruct.Pull = GPIO_NOPULL;
404     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
405     GPIO_InitStruct.Alternate = GPIO_AF1_TIM1;
406     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
407 
408   /* USER CODE BEGIN TIM1_MspPostInit 1 */
409 
410   /* USER CODE END TIM1_MspPostInit 1 */
411   }
412   else if(htim->Instance==TIM2)
413   {
414   /* USER CODE BEGIN TIM2_MspPostInit 0 */
415 
416   /* USER CODE END TIM2_MspPostInit 0 */
417 
418     __HAL_RCC_GPIOB_CLK_ENABLE();
419     /**TIM2 GPIO Configuration
420     PB10     ------> TIM2_CH3
421     PB3     ------> TIM2_CH2
422     */
423     GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_3;
424     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
425     GPIO_InitStruct.Pull = GPIO_NOPULL;
426     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
427     GPIO_InitStruct.Alternate = GPIO_AF1_TIM2;
428     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
429 
430   /* USER CODE BEGIN TIM2_MspPostInit 1 */
431 
432   /* USER CODE END TIM2_MspPostInit 1 */
433   }
434   else if(htim->Instance==TIM3)
435   {
436   /* USER CODE BEGIN TIM3_MspPostInit 0 */
437 
438   /* USER CODE END TIM3_MspPostInit 0 */
439 
440     __HAL_RCC_GPIOB_CLK_ENABLE();
441     __HAL_RCC_GPIOC_CLK_ENABLE();
442     /**TIM3 GPIO Configuration
443     PB1     ------> TIM3_CH4
444     PC7     ------> TIM3_CH2
445     PB4     ------> TIM3_CH1
446     */
447     GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_4;
448     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
449     GPIO_InitStruct.Pull = GPIO_NOPULL;
450     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
451     GPIO_InitStruct.Alternate = GPIO_AF2_TIM3;
452     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
453 
454     GPIO_InitStruct.Pin = GPIO_PIN_7;
455     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
456     GPIO_InitStruct.Pull = GPIO_NOPULL;
457     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
458     GPIO_InitStruct.Alternate = GPIO_AF2_TIM3;
459     HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
460 
461   /* USER CODE BEGIN TIM3_MspPostInit 1 */
462 
463   /* USER CODE END TIM3_MspPostInit 1 */
464   }
465   else if(htim->Instance==TIM4)
466   {
467   /* USER CODE BEGIN TIM4_MspPostInit 0 */
468 
469   /* USER CODE END TIM4_MspPostInit 0 */
470 
471     __HAL_RCC_GPIOB_CLK_ENABLE();
472     /**TIM4 GPIO Configuration
473     PB6     ------> TIM4_CH1
474     */
475     GPIO_InitStruct.Pin = GPIO_PIN_6;
476     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
477     GPIO_InitStruct.Pull = GPIO_NOPULL;
478     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
479     GPIO_InitStruct.Alternate = GPIO_AF2_TIM4;
480     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
481 
482   /* USER CODE BEGIN TIM4_MspPostInit 1 */
483 
484   /* USER CODE END TIM4_MspPostInit 1 */
485   }
486 
487 }
488 /**
489 * @brief TIM_Base MSP De-Initialization
490 * This function freeze the hardware resources used in this example
491 * @param htim_base: TIM_Base handle pointer
492 * @retval None
493 */
HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef * htim_base)494 void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)
495 {
496   if(htim_base->Instance==TIM1)
497   {
498   /* USER CODE BEGIN TIM1_MspDeInit 0 */
499 
500   /* USER CODE END TIM1_MspDeInit 0 */
501     /* Peripheral clock disable */
502     __HAL_RCC_TIM1_CLK_DISABLE();
503   /* USER CODE BEGIN TIM1_MspDeInit 1 */
504 
505   /* USER CODE END TIM1_MspDeInit 1 */
506   }
507   else if(htim_base->Instance==TIM2)
508   {
509   /* USER CODE BEGIN TIM2_MspDeInit 0 */
510 
511   /* USER CODE END TIM2_MspDeInit 0 */
512     /* Peripheral clock disable */
513     __HAL_RCC_TIM2_CLK_DISABLE();
514   /* USER CODE BEGIN TIM2_MspDeInit 1 */
515 
516   /* USER CODE END TIM2_MspDeInit 1 */
517   }
518   else if(htim_base->Instance==TIM3)
519   {
520   /* USER CODE BEGIN TIM3_MspDeInit 0 */
521 
522   /* USER CODE END TIM3_MspDeInit 0 */
523     /* Peripheral clock disable */
524     __HAL_RCC_TIM3_CLK_DISABLE();
525   /* USER CODE BEGIN TIM3_MspDeInit 1 */
526 
527   /* USER CODE END TIM3_MspDeInit 1 */
528   }
529   else if(htim_base->Instance==TIM4)
530   {
531   /* USER CODE BEGIN TIM4_MspDeInit 0 */
532 
533   /* USER CODE END TIM4_MspDeInit 0 */
534     /* Peripheral clock disable */
535     __HAL_RCC_TIM4_CLK_DISABLE();
536   /* USER CODE BEGIN TIM4_MspDeInit 1 */
537 
538   /* USER CODE END TIM4_MspDeInit 1 */
539   }
540   else if(htim_base->Instance==TIM9)
541   {
542   /* USER CODE BEGIN TIM9_MspDeInit 0 */
543 
544   /* USER CODE END TIM9_MspDeInit 0 */
545     /* Peripheral clock disable */
546     __HAL_RCC_TIM9_CLK_DISABLE();
547   /* USER CODE BEGIN TIM9_MspDeInit 1 */
548 
549   /* USER CODE END TIM9_MspDeInit 1 */
550   }
551 
552 }
553 
554 /**
555 * @brief UART MSP Initialization
556 * This function configures the hardware resources used in this example
557 * @param huart: UART handle pointer
558 * @retval None
559 */
HAL_UART_MspInit(UART_HandleTypeDef * huart)560 void HAL_UART_MspInit(UART_HandleTypeDef* huart)
561 {
562   GPIO_InitTypeDef GPIO_InitStruct = {0};
563   if(huart->Instance==USART2)
564   {
565   /* USER CODE BEGIN USART2_MspInit 0 */
566 
567   /* USER CODE END USART2_MspInit 0 */
568     /* Peripheral clock enable */
569     __HAL_RCC_USART2_CLK_ENABLE();
570 
571     __HAL_RCC_GPIOA_CLK_ENABLE();
572     /**USART2 GPIO Configuration
573     PA2     ------> USART2_TX
574     PA3     ------> USART2_RX
575     */
576     GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3;
577     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
578     GPIO_InitStruct.Pull = GPIO_NOPULL;
579     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
580     GPIO_InitStruct.Alternate = GPIO_AF7_USART2;
581     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
582 
583   /* USER CODE BEGIN USART2_MspInit 1 */
584 
585   /* USER CODE END USART2_MspInit 1 */
586   }
587   else if(huart->Instance==USART6)
588   {
589   /* USER CODE BEGIN USART6_MspInit 0 */
590 
591   /* USER CODE END USART6_MspInit 0 */
592     /* Peripheral clock enable */
593     __HAL_RCC_USART6_CLK_ENABLE();
594 
595     __HAL_RCC_GPIOA_CLK_ENABLE();
596     /**USART6 GPIO Configuration
597     PA11     ------> USART6_TX
598     PA12     ------> USART6_RX
599     */
600     GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12;
601     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
602     GPIO_InitStruct.Pull = GPIO_NOPULL;
603     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
604     GPIO_InitStruct.Alternate = GPIO_AF8_USART6;
605     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
606 
607   /* USER CODE BEGIN USART6_MspInit 1 */
608 
609   /* USER CODE END USART6_MspInit 1 */
610   }
611 
612 }
613 
614 /**
615 * @brief UART MSP De-Initialization
616 * This function freeze the hardware resources used in this example
617 * @param huart: UART handle pointer
618 * @retval None
619 */
HAL_UART_MspDeInit(UART_HandleTypeDef * huart)620 void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
621 {
622   if(huart->Instance==USART2)
623   {
624   /* USER CODE BEGIN USART2_MspDeInit 0 */
625 
626   /* USER CODE END USART2_MspDeInit 0 */
627     /* Peripheral clock disable */
628     __HAL_RCC_USART2_CLK_DISABLE();
629 
630     /**USART2 GPIO Configuration
631     PA2     ------> USART2_TX
632     PA3     ------> USART2_RX
633     */
634     HAL_GPIO_DeInit(GPIOA, GPIO_PIN_2|GPIO_PIN_3);
635 
636   /* USER CODE BEGIN USART2_MspDeInit 1 */
637 
638   /* USER CODE END USART2_MspDeInit 1 */
639   }
640   else if(huart->Instance==USART6)
641   {
642   /* USER CODE BEGIN USART6_MspDeInit 0 */
643 
644   /* USER CODE END USART6_MspDeInit 0 */
645     /* Peripheral clock disable */
646     __HAL_RCC_USART6_CLK_DISABLE();
647 
648     /**USART6 GPIO Configuration
649     PA11     ------> USART6_TX
650     PA12     ------> USART6_RX
651     */
652     HAL_GPIO_DeInit(GPIOA, GPIO_PIN_11|GPIO_PIN_12);
653 
654   /* USER CODE BEGIN USART6_MspDeInit 1 */
655 
656   /* USER CODE END USART6_MspDeInit 1 */
657   }
658 
659 }
660 
661 /* USER CODE BEGIN 1 */
662 
663 /* USER CODE END 1 */
664