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   /* System interrupt init*/
96 
97   /* USER CODE BEGIN MspInit 1 */
98 
99   /* USER CODE END MspInit 1 */
100 }
101 
102 /**
103 * @brief ADC MSP Initialization
104 * This function configures the hardware resources used in this example
105 * @param hadc: ADC handle pointer
106 * @retval None
107 */
HAL_ADC_MspInit(ADC_HandleTypeDef * hadc)108 void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
109 {
110   GPIO_InitTypeDef GPIO_InitStruct = {0};
111   if(hadc->Instance==ADC1)
112   {
113   /* USER CODE BEGIN ADC1_MspInit 0 */
114 
115   /* USER CODE END ADC1_MspInit 0 */
116     /* Peripheral clock enable */
117     __HAL_RCC_ADC1_CLK_ENABLE();
118 
119     __HAL_RCC_GPIOC_CLK_ENABLE();
120     __HAL_RCC_GPIOA_CLK_ENABLE();
121     /**ADC1 GPIO Configuration
122     PC0     ------> ADC1_IN10
123     PC1     ------> ADC1_IN11
124     PC3     ------> ADC1_IN13
125     PA3     ------> ADC1_IN3
126     PC4     ------> ADC1_IN14
127     PC5     ------> ADC1_IN15
128     */
129     GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_3|GPIO_PIN_4
130                           |GPIO_PIN_5;
131     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
132     GPIO_InitStruct.Pull = GPIO_NOPULL;
133     HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
134 
135     GPIO_InitStruct.Pin = GPIO_PIN_3;
136     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
137     GPIO_InitStruct.Pull = GPIO_NOPULL;
138     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
139 
140   /* USER CODE BEGIN ADC1_MspInit 1 */
141 
142   /* USER CODE END ADC1_MspInit 1 */
143   }
144 
145 }
146 
147 /**
148 * @brief ADC MSP De-Initialization
149 * This function freeze the hardware resources used in this example
150 * @param hadc: ADC handle pointer
151 * @retval None
152 */
HAL_ADC_MspDeInit(ADC_HandleTypeDef * hadc)153 void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc)
154 {
155   if(hadc->Instance==ADC1)
156   {
157   /* USER CODE BEGIN ADC1_MspDeInit 0 */
158 
159   /* USER CODE END ADC1_MspDeInit 0 */
160     /* Peripheral clock disable */
161     __HAL_RCC_ADC1_CLK_DISABLE();
162 
163     /**ADC1 GPIO Configuration
164     PC0     ------> ADC1_IN10
165     PC1     ------> ADC1_IN11
166     PC3     ------> ADC1_IN13
167     PA3     ------> ADC1_IN3
168     PC4     ------> ADC1_IN14
169     PC5     ------> ADC1_IN15
170     */
171     HAL_GPIO_DeInit(GPIOC, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_3|GPIO_PIN_4
172                           |GPIO_PIN_5);
173 
174     HAL_GPIO_DeInit(GPIOA, GPIO_PIN_3);
175 
176   /* USER CODE BEGIN ADC1_MspDeInit 1 */
177 
178   /* USER CODE END ADC1_MspDeInit 1 */
179   }
180 
181 }
182 
183 /**
184 * @brief TIM_Base MSP Initialization
185 * This function configures the hardware resources used in this example
186 * @param htim_base: TIM_Base handle pointer
187 * @retval None
188 */
HAL_TIM_Base_MspInit(TIM_HandleTypeDef * htim_base)189 void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
190 {
191   if(htim_base->Instance==TIM1)
192   {
193   /* USER CODE BEGIN TIM1_MspInit 0 */
194 
195   /* USER CODE END TIM1_MspInit 0 */
196     /* Peripheral clock enable */
197     __HAL_RCC_TIM1_CLK_ENABLE();
198   /* USER CODE BEGIN TIM1_MspInit 1 */
199 
200   /* USER CODE END TIM1_MspInit 1 */
201   }
202   else if(htim_base->Instance==TIM4)
203   {
204   /* USER CODE BEGIN TIM4_MspInit 0 */
205 
206   /* USER CODE END TIM4_MspInit 0 */
207     /* Peripheral clock enable */
208     __HAL_RCC_TIM4_CLK_ENABLE();
209   /* USER CODE BEGIN TIM4_MspInit 1 */
210 
211   /* USER CODE END TIM4_MspInit 1 */
212   }
213   else if(htim_base->Instance==TIM6)
214   {
215   /* USER CODE BEGIN TIM6_MspInit 0 */
216 
217   /* USER CODE END TIM6_MspInit 0 */
218     /* Peripheral clock enable */
219     __HAL_RCC_TIM6_CLK_ENABLE();
220   /* USER CODE BEGIN TIM6_MspInit 1 */
221 
222   /* USER CODE END TIM6_MspInit 1 */
223   }
224   else if(htim_base->Instance==TIM14)
225   {
226   /* USER CODE BEGIN TIM14_MspInit 0 */
227 
228   /* USER CODE END TIM14_MspInit 0 */
229     /* Peripheral clock enable */
230     __HAL_RCC_TIM14_CLK_ENABLE();
231   /* USER CODE BEGIN TIM14_MspInit 1 */
232 
233   /* USER CODE END TIM14_MspInit 1 */
234   }
235 
236 }
237 
HAL_TIM_MspPostInit(TIM_HandleTypeDef * htim)238 void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim)
239 {
240   GPIO_InitTypeDef GPIO_InitStruct = {0};
241   if(htim->Instance==TIM1)
242   {
243   /* USER CODE BEGIN TIM1_MspPostInit 0 */
244 
245   /* USER CODE END TIM1_MspPostInit 0 */
246     __HAL_RCC_GPIOE_CLK_ENABLE();
247     /**TIM1 GPIO Configuration
248     PE9     ------> TIM1_CH1
249     PE11     ------> TIM1_CH2
250     PE13     ------> TIM1_CH3
251     */
252     GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_11|GPIO_PIN_13;
253     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
254     GPIO_InitStruct.Pull = GPIO_NOPULL;
255     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
256     GPIO_InitStruct.Alternate = GPIO_AF1_TIM1;
257     HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
258 
259   /* USER CODE BEGIN TIM1_MspPostInit 1 */
260 
261   /* USER CODE END TIM1_MspPostInit 1 */
262   }
263   else if(htim->Instance==TIM4)
264   {
265   /* USER CODE BEGIN TIM4_MspPostInit 0 */
266 
267   /* USER CODE END TIM4_MspPostInit 0 */
268 
269     __HAL_RCC_GPIOD_CLK_ENABLE();
270     /**TIM4 GPIO Configuration
271     PD14     ------> TIM4_CH3
272     PD15     ------> TIM4_CH4
273     */
274     GPIO_InitStruct.Pin = GPIO_PIN_14|GPIO_PIN_15;
275     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
276     GPIO_InitStruct.Pull = GPIO_NOPULL;
277     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
278     GPIO_InitStruct.Alternate = GPIO_AF2_TIM4;
279     HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
280 
281   /* USER CODE BEGIN TIM4_MspPostInit 1 */
282 
283   /* USER CODE END TIM4_MspPostInit 1 */
284   }
285   else if(htim->Instance==TIM14)
286   {
287   /* USER CODE BEGIN TIM14_MspPostInit 0 */
288 
289   /* USER CODE END TIM14_MspPostInit 0 */
290 
291     __HAL_RCC_GPIOA_CLK_ENABLE();
292     /**TIM14 GPIO Configuration
293     PA7     ------> TIM14_CH1
294     */
295     GPIO_InitStruct.Pin = GPIO_PIN_7;
296     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
297     GPIO_InitStruct.Pull = GPIO_NOPULL;
298     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
299     GPIO_InitStruct.Alternate = GPIO_AF9_TIM14;
300     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
301 
302   /* USER CODE BEGIN TIM14_MspPostInit 1 */
303 
304   /* USER CODE END TIM14_MspPostInit 1 */
305   }
306 
307 }
308 /**
309 * @brief TIM_Base MSP De-Initialization
310 * This function freeze the hardware resources used in this example
311 * @param htim_base: TIM_Base handle pointer
312 * @retval None
313 */
HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef * htim_base)314 void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)
315 {
316   if(htim_base->Instance==TIM1)
317   {
318   /* USER CODE BEGIN TIM1_MspDeInit 0 */
319 
320   /* USER CODE END TIM1_MspDeInit 0 */
321     /* Peripheral clock disable */
322     __HAL_RCC_TIM1_CLK_DISABLE();
323   /* USER CODE BEGIN TIM1_MspDeInit 1 */
324 
325   /* USER CODE END TIM1_MspDeInit 1 */
326   }
327   else if(htim_base->Instance==TIM4)
328   {
329   /* USER CODE BEGIN TIM4_MspDeInit 0 */
330 
331   /* USER CODE END TIM4_MspDeInit 0 */
332     /* Peripheral clock disable */
333     __HAL_RCC_TIM4_CLK_DISABLE();
334   /* USER CODE BEGIN TIM4_MspDeInit 1 */
335 
336   /* USER CODE END TIM4_MspDeInit 1 */
337   }
338   else if(htim_base->Instance==TIM6)
339   {
340   /* USER CODE BEGIN TIM6_MspDeInit 0 */
341 
342   /* USER CODE END TIM6_MspDeInit 0 */
343     /* Peripheral clock disable */
344     __HAL_RCC_TIM6_CLK_DISABLE();
345   /* USER CODE BEGIN TIM6_MspDeInit 1 */
346 
347   /* USER CODE END TIM6_MspDeInit 1 */
348   }
349   else if(htim_base->Instance==TIM14)
350   {
351   /* USER CODE BEGIN TIM14_MspDeInit 0 */
352 
353   /* USER CODE END TIM14_MspDeInit 0 */
354     /* Peripheral clock disable */
355     __HAL_RCC_TIM14_CLK_DISABLE();
356   /* USER CODE BEGIN TIM14_MspDeInit 1 */
357 
358   /* USER CODE END TIM14_MspDeInit 1 */
359   }
360 
361 }
362 
363 /**
364 * @brief UART MSP Initialization
365 * This function configures the hardware resources used in this example
366 * @param huart: UART handle pointer
367 * @retval None
368 */
HAL_UART_MspInit(UART_HandleTypeDef * huart)369 void HAL_UART_MspInit(UART_HandleTypeDef* huart)
370 {
371   GPIO_InitTypeDef GPIO_InitStruct = {0};
372   if(huart->Instance==USART3)
373   {
374   /* USER CODE BEGIN USART3_MspInit 0 */
375 
376   /* USER CODE END USART3_MspInit 0 */
377     /* Peripheral clock enable */
378     __HAL_RCC_USART3_CLK_ENABLE();
379 
380     __HAL_RCC_GPIOD_CLK_ENABLE();
381     /**USART3 GPIO Configuration
382     PD8     ------> USART3_TX
383     PD9     ------> USART3_RX
384     */
385     GPIO_InitStruct.Pin = STLK_RX_Pin|STLK_TX_Pin;
386     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
387     GPIO_InitStruct.Pull = GPIO_NOPULL;
388     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
389     GPIO_InitStruct.Alternate = GPIO_AF7_USART3;
390     HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
391 
392   /* USER CODE BEGIN USART3_MspInit 1 */
393 
394   /* USER CODE END USART3_MspInit 1 */
395   }
396 
397 }
398 
399 /**
400 * @brief UART MSP De-Initialization
401 * This function freeze the hardware resources used in this example
402 * @param huart: UART handle pointer
403 * @retval None
404 */
HAL_UART_MspDeInit(UART_HandleTypeDef * huart)405 void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
406 {
407   if(huart->Instance==USART3)
408   {
409   /* USER CODE BEGIN USART3_MspDeInit 0 */
410 
411   /* USER CODE END USART3_MspDeInit 0 */
412     /* Peripheral clock disable */
413     __HAL_RCC_USART3_CLK_DISABLE();
414 
415     /**USART3 GPIO Configuration
416     PD8     ------> USART3_TX
417     PD9     ------> USART3_RX
418     */
419     HAL_GPIO_DeInit(GPIOD, STLK_RX_Pin|STLK_TX_Pin);
420 
421   /* USER CODE BEGIN USART3_MspDeInit 1 */
422 
423   /* USER CODE END USART3_MspDeInit 1 */
424   }
425 
426 }
427 
428 /**
429 * @brief PCD MSP Initialization
430 * This function configures the hardware resources used in this example
431 * @param hpcd: PCD handle pointer
432 * @retval None
433 */
HAL_PCD_MspInit(PCD_HandleTypeDef * hpcd)434 void HAL_PCD_MspInit(PCD_HandleTypeDef* hpcd)
435 {
436   GPIO_InitTypeDef GPIO_InitStruct = {0};
437   RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
438   if(hpcd->Instance==USB_OTG_FS)
439   {
440   /* USER CODE BEGIN USB_OTG_FS_MspInit 0 */
441 
442   /* USER CODE END USB_OTG_FS_MspInit 0 */
443 
444   /** Initializes the peripherals clock
445   */
446     PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_CLK48;
447     PeriphClkInitStruct.Clk48ClockSelection = RCC_CLK48CLKSOURCE_PLLQ;
448     if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
449     {
450       Error_Handler();
451     }
452 
453     __HAL_RCC_GPIOA_CLK_ENABLE();
454     /**USB_OTG_FS GPIO Configuration
455     PA8     ------> USB_OTG_FS_SOF
456     PA10     ------> USB_OTG_FS_ID
457     PA11     ------> USB_OTG_FS_DM
458     PA12     ------> USB_OTG_FS_DP
459     */
460     GPIO_InitStruct.Pin = USB_SOF_Pin|USB_ID_Pin|USB_DM_Pin|USB_DP_Pin;
461     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
462     GPIO_InitStruct.Pull = GPIO_NOPULL;
463     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
464     GPIO_InitStruct.Alternate = GPIO_AF10_OTG_FS;
465     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
466 
467     /* Peripheral clock enable */
468     __HAL_RCC_USB_OTG_FS_CLK_ENABLE();
469   /* USER CODE BEGIN USB_OTG_FS_MspInit 1 */
470 
471   /* USER CODE END USB_OTG_FS_MspInit 1 */
472   }
473 
474 }
475 
476 /**
477 * @brief PCD MSP De-Initialization
478 * This function freeze the hardware resources used in this example
479 * @param hpcd: PCD handle pointer
480 * @retval None
481 */
HAL_PCD_MspDeInit(PCD_HandleTypeDef * hpcd)482 void HAL_PCD_MspDeInit(PCD_HandleTypeDef* hpcd)
483 {
484   if(hpcd->Instance==USB_OTG_FS)
485   {
486   /* USER CODE BEGIN USB_OTG_FS_MspDeInit 0 */
487 
488   /* USER CODE END USB_OTG_FS_MspDeInit 0 */
489     /* Peripheral clock disable */
490     __HAL_RCC_USB_OTG_FS_CLK_DISABLE();
491 
492     /**USB_OTG_FS GPIO Configuration
493     PA8     ------> USB_OTG_FS_SOF
494     PA10     ------> USB_OTG_FS_ID
495     PA11     ------> USB_OTG_FS_DM
496     PA12     ------> USB_OTG_FS_DP
497     */
498     HAL_GPIO_DeInit(GPIOA, USB_SOF_Pin|USB_ID_Pin|USB_DM_Pin|USB_DP_Pin);
499 
500   /* USER CODE BEGIN USB_OTG_FS_MspDeInit 1 */
501 
502   /* USER CODE END USB_OTG_FS_MspDeInit 1 */
503   }
504 
505 }
506 
507 /* USER CODE BEGIN 1 */
508 
509 /* USER CODE END 1 */
510