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