1 /* USER CODE BEGIN Header */
2 /**
3 ******************************************************************************
4 * @file : main.c
5 * @brief : Main program body
6 ******************************************************************************
7 * @attention
8 *
9 * Copyright (c) 2023 STMicroelectronics.
10 * All rights reserved.
11 *
12 * This software is licensed under terms that can be found in the LICENSE file
13 * in the root directory of this software component.
14 * If no LICENSE file comes with this software, it is provided AS-IS.
15 *
16 ******************************************************************************
17 */
18 /* USER CODE END Header */
19 /* Includes ------------------------------------------------------------------*/
20 #include "main.h"
21
22 /* Private includes ----------------------------------------------------------*/
23 /* USER CODE BEGIN Includes */
24
25 /* USER CODE END Includes */
26
27 /* Private typedef -----------------------------------------------------------*/
28 /* USER CODE BEGIN PTD */
29
30 /* USER CODE END PTD */
31
32 /* Private define ------------------------------------------------------------*/
33 /* USER CODE BEGIN PD */
34
35 /* USER CODE END PD */
36
37 /* Private macro -------------------------------------------------------------*/
38 /* USER CODE BEGIN PM */
39
40 /* USER CODE END PM */
41
42 /* Private variables ---------------------------------------------------------*/
43 ADC_HandleTypeDef hadc1;
44
45 TIM_HandleTypeDef htim1;
46 TIM_HandleTypeDef htim2;
47 TIM_HandleTypeDef htim3;
48
49 UART_HandleTypeDef huart1;
50 UART_HandleTypeDef huart3;
51
52 PCD_HandleTypeDef hpcd_USB_DRD_FS;
53
54 /* USER CODE BEGIN PV */
55
56 /* USER CODE END PV */
57
58 /* Private function prototypes -----------------------------------------------*/
59 void SystemClock_Config(void);
60 static void MX_GPIO_Init(void);
61 static void MX_ICACHE_Init(void);
62 static void MX_USART1_UART_Init(void);
63 static void MX_USART3_UART_Init(void);
64 static void MX_USB_PCD_Init(void);
65 static void MX_MEMORYMAP_Init(void);
66 static void MX_ADC1_Init(void);
67 static void MX_TIM1_Init(void);
68 static void MX_TIM2_Init(void);
69 static void MX_TIM3_Init(void);
70 /* USER CODE BEGIN PFP */
71
72 /* USER CODE END PFP */
73
74 /* Private user code ---------------------------------------------------------*/
75 /* USER CODE BEGIN 0 */
76
77 /* USER CODE END 0 */
78
79 /**
80 * @brief The application entry point.
81 * @retval int
82 */
main(void)83 int main(void)
84 {
85 /* USER CODE BEGIN 1 */
86
87 /* USER CODE END 1 */
88
89 /* MCU Configuration--------------------------------------------------------*/
90
91 /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
92 HAL_Init();
93
94 /* USER CODE BEGIN Init */
95
96 /* USER CODE END Init */
97
98 /* Configure the system clock */
99 SystemClock_Config();
100
101 /* USER CODE BEGIN SysInit */
102
103 /* USER CODE END SysInit */
104
105 /* Initialize all configured peripherals */
106 MX_GPIO_Init();
107 MX_ICACHE_Init();
108 MX_USART1_UART_Init();
109 MX_USART3_UART_Init();
110 MX_USB_PCD_Init();
111 MX_MEMORYMAP_Init();
112 MX_ADC1_Init();
113 MX_TIM1_Init();
114 MX_TIM2_Init();
115 MX_TIM3_Init();
116 /* USER CODE BEGIN 2 */
117
118 /* USER CODE END 2 */
119
120 /* Infinite loop */
121 /* USER CODE BEGIN WHILE */
122 while (1)
123 {
124 /* USER CODE END WHILE */
125
126 /* USER CODE BEGIN 3 */
127 }
128 /* USER CODE END 3 */
129 }
130
131 /**
132 * @brief System Clock Configuration
133 * @retval None
134 */
SystemClock_Config(void)135 void SystemClock_Config(void)
136 {
137 RCC_OscInitTypeDef RCC_OscInitStruct = {0};
138 RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
139
140 /** Configure the main internal regulator output voltage
141 */
142 __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE0);
143
144 while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {}
145
146 /** Initializes the RCC Oscillators according to the specified parameters
147 * in the RCC_OscInitTypeDef structure.
148 */
149 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48|RCC_OSCILLATORTYPE_HSE;
150 RCC_OscInitStruct.HSEState = RCC_HSE_ON;
151 RCC_OscInitStruct.HSI48State = RCC_HSI48_ON;
152 RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
153 RCC_OscInitStruct.PLL.PLLSource = RCC_PLL1_SOURCE_HSE;
154 RCC_OscInitStruct.PLL.PLLM = 12;
155 RCC_OscInitStruct.PLL.PLLN = 250;
156 RCC_OscInitStruct.PLL.PLLP = 2;
157 RCC_OscInitStruct.PLL.PLLQ = 2;
158 RCC_OscInitStruct.PLL.PLLR = 2;
159 RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1_VCIRANGE_1;
160 RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1_VCORANGE_WIDE;
161 RCC_OscInitStruct.PLL.PLLFRACN = 0;
162 if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
163 {
164 Error_Handler();
165 }
166
167 /** Initializes the CPU, AHB and APB buses clocks
168 */
169 RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
170 |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2
171 |RCC_CLOCKTYPE_PCLK3;
172 RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
173 RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
174 RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
175 RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
176 RCC_ClkInitStruct.APB3CLKDivider = RCC_HCLK_DIV1;
177
178 if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK)
179 {
180 Error_Handler();
181 }
182 }
183
184 /**
185 * @brief ADC1 Initialization Function
186 * @param None
187 * @retval None
188 */
MX_ADC1_Init(void)189 static void MX_ADC1_Init(void)
190 {
191
192 /* USER CODE BEGIN ADC1_Init 0 */
193
194 /* USER CODE END ADC1_Init 0 */
195
196 ADC_ChannelConfTypeDef sConfig = {0};
197
198 /* USER CODE BEGIN ADC1_Init 1 */
199
200 /* USER CODE END ADC1_Init 1 */
201
202 /** Common config
203 */
204 hadc1.Instance = ADC1;
205 hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV2;
206 hadc1.Init.Resolution = ADC_RESOLUTION_12B;
207 hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
208 hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;
209 hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
210 hadc1.Init.LowPowerAutoWait = DISABLE;
211 hadc1.Init.ContinuousConvMode = DISABLE;
212 hadc1.Init.NbrOfConversion = 1;
213 hadc1.Init.DiscontinuousConvMode = DISABLE;
214 hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
215 hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
216 hadc1.Init.DMAContinuousRequests = DISABLE;
217 hadc1.Init.SamplingMode = ADC_SAMPLING_MODE_NORMAL;
218 hadc1.Init.Overrun = ADC_OVR_DATA_PRESERVED;
219 hadc1.Init.OversamplingMode = DISABLE;
220 if (HAL_ADC_Init(&hadc1) != HAL_OK)
221 {
222 Error_Handler();
223 }
224
225 /** Configure Regular Channel
226 */
227 sConfig.Channel = ADC_CHANNEL_0;
228 sConfig.Rank = ADC_REGULAR_RANK_1;
229 sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5;
230 sConfig.SingleDiff = ADC_SINGLE_ENDED;
231 sConfig.OffsetNumber = ADC_OFFSET_NONE;
232 sConfig.Offset = 0;
233 if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
234 {
235 Error_Handler();
236 }
237 /* USER CODE BEGIN ADC1_Init 2 */
238
239 /* USER CODE END ADC1_Init 2 */
240
241 }
242
243 /**
244 * @brief ICACHE Initialization Function
245 * @param None
246 * @retval None
247 */
MX_ICACHE_Init(void)248 static void MX_ICACHE_Init(void)
249 {
250
251 /* USER CODE BEGIN ICACHE_Init 0 */
252
253 /* USER CODE END ICACHE_Init 0 */
254
255 /* USER CODE BEGIN ICACHE_Init 1 */
256
257 /* USER CODE END ICACHE_Init 1 */
258
259 /** Enable instruction cache (default 2-ways set associative cache)
260 */
261 if (HAL_ICACHE_Enable() != HAL_OK)
262 {
263 Error_Handler();
264 }
265 /* USER CODE BEGIN ICACHE_Init 2 */
266
267 /* USER CODE END ICACHE_Init 2 */
268
269 }
270
271 /**
272 * @brief MEMORYMAP Initialization Function
273 * @param None
274 * @retval None
275 */
MX_MEMORYMAP_Init(void)276 static void MX_MEMORYMAP_Init(void)
277 {
278
279 /* USER CODE BEGIN MEMORYMAP_Init 0 */
280
281 /* USER CODE END MEMORYMAP_Init 0 */
282
283 /* USER CODE BEGIN MEMORYMAP_Init 1 */
284
285 /* USER CODE END MEMORYMAP_Init 1 */
286 /* USER CODE BEGIN MEMORYMAP_Init 2 */
287
288 /* USER CODE END MEMORYMAP_Init 2 */
289
290 }
291
292 /**
293 * @brief TIM1 Initialization Function
294 * @param None
295 * @retval None
296 */
MX_TIM1_Init(void)297 static void MX_TIM1_Init(void)
298 {
299
300 /* USER CODE BEGIN TIM1_Init 0 */
301
302 /* USER CODE END TIM1_Init 0 */
303
304 TIM_ClockConfigTypeDef sClockSourceConfig = {0};
305 TIM_MasterConfigTypeDef sMasterConfig = {0};
306 TIM_OC_InitTypeDef sConfigOC = {0};
307 TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0};
308
309 /* USER CODE BEGIN TIM1_Init 1 */
310
311 /* USER CODE END TIM1_Init 1 */
312 htim1.Instance = TIM1;
313 htim1.Init.Prescaler = 0;
314 htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
315 htim1.Init.Period = 65535;
316 htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
317 htim1.Init.RepetitionCounter = 0;
318 htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
319 if (HAL_TIM_Base_Init(&htim1) != HAL_OK)
320 {
321 Error_Handler();
322 }
323 sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
324 if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK)
325 {
326 Error_Handler();
327 }
328 if (HAL_TIM_PWM_Init(&htim1) != HAL_OK)
329 {
330 Error_Handler();
331 }
332 sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
333 sMasterConfig.MasterOutputTrigger2 = TIM_TRGO2_RESET;
334 sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
335 if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK)
336 {
337 Error_Handler();
338 }
339 sConfigOC.OCMode = TIM_OCMODE_PWM1;
340 sConfigOC.Pulse = 0;
341 sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
342 sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
343 sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
344 sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
345 sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
346 if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)
347 {
348 Error_Handler();
349 }
350 sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE;
351 sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE;
352 sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;
353 sBreakDeadTimeConfig.DeadTime = 0;
354 sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;
355 sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
356 sBreakDeadTimeConfig.BreakFilter = 0;
357 sBreakDeadTimeConfig.BreakAFMode = TIM_BREAK_AFMODE_INPUT;
358 sBreakDeadTimeConfig.Break2State = TIM_BREAK2_DISABLE;
359 sBreakDeadTimeConfig.Break2Polarity = TIM_BREAK2POLARITY_HIGH;
360 sBreakDeadTimeConfig.Break2Filter = 0;
361 sBreakDeadTimeConfig.Break2AFMode = TIM_BREAK_AFMODE_INPUT;
362 sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
363 if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK)
364 {
365 Error_Handler();
366 }
367 /* USER CODE BEGIN TIM1_Init 2 */
368
369 /* USER CODE END TIM1_Init 2 */
370 HAL_TIM_MspPostInit(&htim1);
371
372 }
373
374 /**
375 * @brief TIM2 Initialization Function
376 * @param None
377 * @retval None
378 */
MX_TIM2_Init(void)379 static void MX_TIM2_Init(void)
380 {
381
382 /* USER CODE BEGIN TIM2_Init 0 */
383
384 /* USER CODE END TIM2_Init 0 */
385
386 TIM_ClockConfigTypeDef sClockSourceConfig = {0};
387 TIM_MasterConfigTypeDef sMasterConfig = {0};
388 TIM_OC_InitTypeDef sConfigOC = {0};
389
390 /* USER CODE BEGIN TIM2_Init 1 */
391
392 /* USER CODE END TIM2_Init 1 */
393 htim2.Instance = TIM2;
394 htim2.Init.Prescaler = 0;
395 htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
396 htim2.Init.Period = 4.294967295E9;
397 htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
398 htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
399 if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
400 {
401 Error_Handler();
402 }
403 sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
404 if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
405 {
406 Error_Handler();
407 }
408 if (HAL_TIM_PWM_Init(&htim2) != HAL_OK)
409 {
410 Error_Handler();
411 }
412 sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
413 sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
414 if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
415 {
416 Error_Handler();
417 }
418 sConfigOC.OCMode = TIM_OCMODE_PWM1;
419 sConfigOC.Pulse = 0;
420 sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
421 sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
422 if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)
423 {
424 Error_Handler();
425 }
426 /* USER CODE BEGIN TIM2_Init 2 */
427
428 /* USER CODE END TIM2_Init 2 */
429 HAL_TIM_MspPostInit(&htim2);
430
431 }
432
433 /**
434 * @brief TIM3 Initialization Function
435 * @param None
436 * @retval None
437 */
MX_TIM3_Init(void)438 static void MX_TIM3_Init(void)
439 {
440
441 /* USER CODE BEGIN TIM3_Init 0 */
442
443 /* USER CODE END TIM3_Init 0 */
444
445 TIM_ClockConfigTypeDef sClockSourceConfig = {0};
446 TIM_MasterConfigTypeDef sMasterConfig = {0};
447 TIM_OC_InitTypeDef sConfigOC = {0};
448
449 /* USER CODE BEGIN TIM3_Init 1 */
450
451 /* USER CODE END TIM3_Init 1 */
452 htim3.Instance = TIM3;
453 htim3.Init.Prescaler = 0;
454 htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
455 htim3.Init.Period = 65535;
456 htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
457 htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
458 if (HAL_TIM_Base_Init(&htim3) != HAL_OK)
459 {
460 Error_Handler();
461 }
462 sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
463 if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK)
464 {
465 Error_Handler();
466 }
467 if (HAL_TIM_PWM_Init(&htim3) != HAL_OK)
468 {
469 Error_Handler();
470 }
471 sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
472 sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
473 if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK)
474 {
475 Error_Handler();
476 }
477 sConfigOC.OCMode = TIM_OCMODE_PWM1;
478 sConfigOC.Pulse = 0;
479 sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
480 sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
481 if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
482 {
483 Error_Handler();
484 }
485 if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)
486 {
487 Error_Handler();
488 }
489 if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_4) != HAL_OK)
490 {
491 Error_Handler();
492 }
493 /* USER CODE BEGIN TIM3_Init 2 */
494
495 /* USER CODE END TIM3_Init 2 */
496 HAL_TIM_MspPostInit(&htim3);
497
498 }
499
500 /**
501 * @brief USART1 Initialization Function
502 * @param None
503 * @retval None
504 */
MX_USART1_UART_Init(void)505 static void MX_USART1_UART_Init(void)
506 {
507
508 /* USER CODE BEGIN USART1_Init 0 */
509
510 /* USER CODE END USART1_Init 0 */
511
512 /* USER CODE BEGIN USART1_Init 1 */
513
514 /* USER CODE END USART1_Init 1 */
515 huart1.Instance = USART1;
516 huart1.Init.BaudRate = 115200;
517 huart1.Init.WordLength = UART_WORDLENGTH_8B;
518 huart1.Init.StopBits = UART_STOPBITS_1;
519 huart1.Init.Parity = UART_PARITY_NONE;
520 huart1.Init.Mode = UART_MODE_TX_RX;
521 huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
522 huart1.Init.OverSampling = UART_OVERSAMPLING_16;
523 huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
524 huart1.Init.ClockPrescaler = UART_PRESCALER_DIV1;
525 huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
526 if (HAL_UART_Init(&huart1) != HAL_OK)
527 {
528 Error_Handler();
529 }
530 if (HAL_UARTEx_SetTxFifoThreshold(&huart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
531 {
532 Error_Handler();
533 }
534 if (HAL_UARTEx_SetRxFifoThreshold(&huart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
535 {
536 Error_Handler();
537 }
538 if (HAL_UARTEx_DisableFifoMode(&huart1) != HAL_OK)
539 {
540 Error_Handler();
541 }
542 /* USER CODE BEGIN USART1_Init 2 */
543
544 /* USER CODE END USART1_Init 2 */
545
546 }
547
548 /**
549 * @brief USART3 Initialization Function
550 * @param None
551 * @retval None
552 */
MX_USART3_UART_Init(void)553 static void MX_USART3_UART_Init(void)
554 {
555
556 /* USER CODE BEGIN USART3_Init 0 */
557
558 /* USER CODE END USART3_Init 0 */
559
560 /* USER CODE BEGIN USART3_Init 1 */
561
562 /* USER CODE END USART3_Init 1 */
563 huart3.Instance = USART3;
564 huart3.Init.BaudRate = 115200;
565 huart3.Init.WordLength = UART_WORDLENGTH_8B;
566 huart3.Init.StopBits = UART_STOPBITS_1;
567 huart3.Init.Parity = UART_PARITY_NONE;
568 huart3.Init.Mode = UART_MODE_TX_RX;
569 huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
570 huart3.Init.OverSampling = UART_OVERSAMPLING_16;
571 huart3.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
572 huart3.Init.ClockPrescaler = UART_PRESCALER_DIV1;
573 huart3.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
574 if (HAL_UART_Init(&huart3) != HAL_OK)
575 {
576 Error_Handler();
577 }
578 if (HAL_UARTEx_SetTxFifoThreshold(&huart3, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
579 {
580 Error_Handler();
581 }
582 if (HAL_UARTEx_SetRxFifoThreshold(&huart3, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
583 {
584 Error_Handler();
585 }
586 if (HAL_UARTEx_DisableFifoMode(&huart3) != HAL_OK)
587 {
588 Error_Handler();
589 }
590 /* USER CODE BEGIN USART3_Init 2 */
591
592 /* USER CODE END USART3_Init 2 */
593
594 }
595
596 /**
597 * @brief USB Initialization Function
598 * @param None
599 * @retval None
600 */
MX_USB_PCD_Init(void)601 static void MX_USB_PCD_Init(void)
602 {
603
604 /* USER CODE BEGIN USB_Init 0 */
605
606 /* USER CODE END USB_Init 0 */
607
608 /* USER CODE BEGIN USB_Init 1 */
609
610 /* USER CODE END USB_Init 1 */
611 hpcd_USB_DRD_FS.Instance = USB_DRD_FS;
612 hpcd_USB_DRD_FS.Init.dev_endpoints = 8;
613 hpcd_USB_DRD_FS.Init.speed = USBD_FS_SPEED;
614 hpcd_USB_DRD_FS.Init.phy_itface = PCD_PHY_EMBEDDED;
615 hpcd_USB_DRD_FS.Init.Sof_enable = DISABLE;
616 hpcd_USB_DRD_FS.Init.low_power_enable = DISABLE;
617 hpcd_USB_DRD_FS.Init.lpm_enable = DISABLE;
618 hpcd_USB_DRD_FS.Init.battery_charging_enable = DISABLE;
619 hpcd_USB_DRD_FS.Init.vbus_sensing_enable = DISABLE;
620 hpcd_USB_DRD_FS.Init.bulk_doublebuffer_enable = DISABLE;
621 hpcd_USB_DRD_FS.Init.iso_singlebuffer_enable = DISABLE;
622 if (HAL_PCD_Init(&hpcd_USB_DRD_FS) != HAL_OK)
623 {
624 Error_Handler();
625 }
626 /* USER CODE BEGIN USB_Init 2 */
627
628 /* USER CODE END USB_Init 2 */
629
630 }
631
632 /**
633 * @brief GPIO Initialization Function
634 * @param None
635 * @retval None
636 */
MX_GPIO_Init(void)637 static void MX_GPIO_Init(void)
638 {
639 GPIO_InitTypeDef GPIO_InitStruct = {0};
640 /* USER CODE BEGIN MX_GPIO_Init_1 */
641 /* USER CODE END MX_GPIO_Init_1 */
642
643 /* GPIO Ports Clock Enable */
644 __HAL_RCC_GPIOC_CLK_ENABLE();
645 __HAL_RCC_GPIOH_CLK_ENABLE();
646 __HAL_RCC_GPIOA_CLK_ENABLE();
647 __HAL_RCC_GPIOB_CLK_ENABLE();
648 __HAL_RCC_GPIOD_CLK_ENABLE();
649
650 /*Configure GPIO pin Output Level */
651 HAL_GPIO_WritePin(USER_LED_GPIO_Port, USER_LED_Pin, GPIO_PIN_RESET);
652
653 /*Configure GPIO pin Output Level */
654 HAL_GPIO_WritePin(USB_FS_PWR_EN_GPIO_Port, USB_FS_PWR_EN_Pin, GPIO_PIN_RESET);
655
656 /*Configure GPIO pin : B1_BLUE_USER_BUTTON_Pin */
657 GPIO_InitStruct.Pin = B1_BLUE_USER_BUTTON_Pin;
658 GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
659 GPIO_InitStruct.Pull = GPIO_NOPULL;
660 HAL_GPIO_Init(B1_BLUE_USER_BUTTON_GPIO_Port, &GPIO_InitStruct);
661
662 /*Configure GPIO pin : USER_LED_Pin */
663 GPIO_InitStruct.Pin = USER_LED_Pin;
664 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
665 GPIO_InitStruct.Pull = GPIO_NOPULL;
666 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
667 HAL_GPIO_Init(USER_LED_GPIO_Port, &GPIO_InitStruct);
668
669 /*Configure GPIO pin : USB_FS_VBUS_Pin */
670 GPIO_InitStruct.Pin = USB_FS_VBUS_Pin;
671 GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
672 GPIO_InitStruct.Pull = GPIO_NOPULL;
673 HAL_GPIO_Init(USB_FS_VBUS_GPIO_Port, &GPIO_InitStruct);
674
675 /*Configure GPIO pin : USB_FS_PWR_EN_Pin */
676 GPIO_InitStruct.Pin = USB_FS_PWR_EN_Pin;
677 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
678 GPIO_InitStruct.Pull = GPIO_NOPULL;
679 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
680 HAL_GPIO_Init(USB_FS_PWR_EN_GPIO_Port, &GPIO_InitStruct);
681
682 /*Configure GPIO pin : USB_FS_OVCR_Pin */
683 GPIO_InitStruct.Pin = USB_FS_OVCR_Pin;
684 GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
685 GPIO_InitStruct.Pull = GPIO_NOPULL;
686 HAL_GPIO_Init(USB_FS_OVCR_GPIO_Port, &GPIO_InitStruct);
687
688 /*Configure GPIO pins : PB6 PB7 */
689 GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
690 GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
691 GPIO_InitStruct.Pull = GPIO_NOPULL;
692 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
693 GPIO_InitStruct.Alternate = GPIO_AF4_I2C1;
694 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
695
696 /* USER CODE BEGIN MX_GPIO_Init_2 */
697 /* USER CODE END MX_GPIO_Init_2 */
698 }
699
700 /* USER CODE BEGIN 4 */
701
702 /* USER CODE END 4 */
703
704 /**
705 * @brief This function is executed in case of error occurrence.
706 * @retval None
707 */
Error_Handler(void)708 void Error_Handler(void)
709 {
710 /* USER CODE BEGIN Error_Handler_Debug */
711 /* User can add his own implementation to report the HAL error return state */
712 __disable_irq();
713 while (1)
714 {
715 }
716 /* USER CODE END Error_Handler_Debug */
717 }
718
719 #ifdef USE_FULL_ASSERT
720 /**
721 * @brief Reports the name of the source file and the source line number
722 * where the assert_param error has occurred.
723 * @param file: pointer to the source file name
724 * @param line: assert_param error line source number
725 * @retval None
726 */
assert_failed(uint8_t * file,uint32_t line)727 void assert_failed(uint8_t *file, uint32_t line)
728 {
729 /* USER CODE BEGIN 6 */
730 /* User can add his own implementation to report the file name and line number,
731 ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
732 /* USER CODE END 6 */
733 }
734 #endif /* USE_FULL_ASSERT */
735