1 /* USER CODE BEGIN Header */
2 /**
3 ******************************************************************************
4 * @file : main.c
5 * @brief : Main program body
6 ******************************************************************************
7 * @attention
8 *
9 * Copyright (c) 2024 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 #include "string.h"
22
23 /* Private includes ----------------------------------------------------------*/
24 /* USER CODE BEGIN Includes */
25
26 /* USER CODE END Includes */
27
28 /* Private typedef -----------------------------------------------------------*/
29 /* USER CODE BEGIN PTD */
30
31 /* USER CODE END PTD */
32
33 /* Private define ------------------------------------------------------------*/
34 /* USER CODE BEGIN PD */
35
36 /* USER CODE END PD */
37
38 /* Private macro -------------------------------------------------------------*/
39 /* USER CODE BEGIN PM */
40
41 /* USER CODE END PM */
42
43 /* Private variables ---------------------------------------------------------*/
44
45 ETH_TxPacketConfig TxConfig;
46 ETH_DMADescTypeDef DMARxDscrTab[ETH_RX_DESC_CNT]; /* Ethernet Rx DMA Descriptors */
47 ETH_DMADescTypeDef DMATxDscrTab[ETH_TX_DESC_CNT]; /* Ethernet Tx DMA Descriptors */
48
49 ADC_HandleTypeDef hadc1;
50 ADC_HandleTypeDef hadc2;
51
52 ETH_HandleTypeDef heth;
53
54 UART_HandleTypeDef hlpuart1;
55 UART_HandleTypeDef huart3;
56
57 TIM_HandleTypeDef htim1;
58 TIM_HandleTypeDef htim3;
59 TIM_HandleTypeDef htim4;
60
61 PCD_HandleTypeDef hpcd_USB_DRD_FS;
62
63 /* USER CODE BEGIN PV */
64
65 /* USER CODE END PV */
66
67 /* Private function prototypes -----------------------------------------------*/
68 void SystemClock_Config(void);
69 static void MX_GPIO_Init(void);
70 static void MX_ADC1_Init(void);
71 static void MX_ETH_Init(void);
72 static void MX_ICACHE_Init(void);
73 static void MX_LPUART1_UART_Init(void);
74 static void MX_USART3_UART_Init(void);
75 static void MX_UCPD1_Init(void);
76 static void MX_USB_PCD_Init(void);
77 static void MX_ADC2_Init(void);
78 static void MX_TIM1_Init(void);
79 static void MX_TIM3_Init(void);
80 static void MX_TIM4_Init(void);
81 /* USER CODE BEGIN PFP */
82
83 /* USER CODE END PFP */
84
85 /* Private user code ---------------------------------------------------------*/
86 /* USER CODE BEGIN 0 */
87
88 /* USER CODE END 0 */
89
90 /**
91 * @brief The application entry point.
92 * @retval int
93 */
main(void)94 int main(void)
95 {
96 /* USER CODE BEGIN 1 */
97
98 /* USER CODE END 1 */
99
100 /* MCU Configuration--------------------------------------------------------*/
101
102 /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
103 HAL_Init();
104
105 /* USER CODE BEGIN Init */
106
107 /* USER CODE END Init */
108
109 /* Configure the system clock */
110 SystemClock_Config();
111
112 /* USER CODE BEGIN SysInit */
113
114 /* USER CODE END SysInit */
115
116 /* Initialize all configured peripherals */
117 MX_GPIO_Init();
118 MX_ADC1_Init();
119 MX_ETH_Init();
120 MX_ICACHE_Init();
121 MX_LPUART1_UART_Init();
122 MX_USART3_UART_Init();
123 MX_UCPD1_Init();
124 MX_USB_PCD_Init();
125 MX_ADC2_Init();
126 MX_TIM1_Init();
127 MX_TIM3_Init();
128 MX_TIM4_Init();
129 /* USER CODE BEGIN 2 */
130
131 /* USER CODE END 2 */
132
133 /* Infinite loop */
134 /* USER CODE BEGIN WHILE */
135 while (1)
136 {
137 /* USER CODE END WHILE */
138
139 /* USER CODE BEGIN 3 */
140 }
141 /* USER CODE END 3 */
142 }
143
144 /**
145 * @brief System Clock Configuration
146 * @retval None
147 */
SystemClock_Config(void)148 void SystemClock_Config(void)
149 {
150 RCC_OscInitTypeDef RCC_OscInitStruct = {0};
151 RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
152
153 /** Configure the main internal regulator output voltage
154 */
155 __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE0);
156
157 while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {}
158
159 /** Initializes the RCC Oscillators according to the specified parameters
160 * in the RCC_OscInitTypeDef structure.
161 */
162 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48|RCC_OSCILLATORTYPE_HSI
163 |RCC_OSCILLATORTYPE_HSE;
164 RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS_DIGITAL;
165 RCC_OscInitStruct.HSIState = RCC_HSI_ON;
166 RCC_OscInitStruct.HSIDiv = RCC_HSI_DIV1;
167 RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
168 RCC_OscInitStruct.HSI48State = RCC_HSI48_ON;
169 RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
170 RCC_OscInitStruct.PLL.PLLSource = RCC_PLL1_SOURCE_HSE;
171 RCC_OscInitStruct.PLL.PLLM = 4;
172 RCC_OscInitStruct.PLL.PLLN = 250;
173 RCC_OscInitStruct.PLL.PLLP = 2;
174 RCC_OscInitStruct.PLL.PLLQ = 2;
175 RCC_OscInitStruct.PLL.PLLR = 2;
176 RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1_VCIRANGE_1;
177 RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1_VCORANGE_WIDE;
178 RCC_OscInitStruct.PLL.PLLFRACN = 0;
179 if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
180 {
181 Error_Handler();
182 }
183
184 /** Initializes the CPU, AHB and APB buses clocks
185 */
186 RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
187 |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2
188 |RCC_CLOCKTYPE_PCLK3;
189 RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
190 RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
191 RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
192 RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
193 RCC_ClkInitStruct.APB3CLKDivider = RCC_HCLK_DIV1;
194
195 if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK)
196 {
197 Error_Handler();
198 }
199 }
200
201 /**
202 * @brief ADC1 Initialization Function
203 * @param None
204 * @retval None
205 */
MX_ADC1_Init(void)206 static void MX_ADC1_Init(void)
207 {
208
209 /* USER CODE BEGIN ADC1_Init 0 */
210
211 /* USER CODE END ADC1_Init 0 */
212
213 ADC_ChannelConfTypeDef sConfig = {0};
214
215 /* USER CODE BEGIN ADC1_Init 1 */
216
217 /* USER CODE END ADC1_Init 1 */
218
219 /** Common config
220 */
221 hadc1.Instance = ADC1;
222 hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV2;
223 hadc1.Init.Resolution = ADC_RESOLUTION_12B;
224 hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
225 hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;
226 hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
227 hadc1.Init.LowPowerAutoWait = DISABLE;
228 hadc1.Init.ContinuousConvMode = DISABLE;
229 hadc1.Init.NbrOfConversion = 1;
230 hadc1.Init.DiscontinuousConvMode = DISABLE;
231 hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
232 hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
233 hadc1.Init.DMAContinuousRequests = DISABLE;
234 hadc1.Init.SamplingMode = ADC_SAMPLING_MODE_NORMAL;
235 hadc1.Init.Overrun = ADC_OVR_DATA_PRESERVED;
236 hadc1.Init.OversamplingMode = DISABLE;
237 if (HAL_ADC_Init(&hadc1) != HAL_OK)
238 {
239 Error_Handler();
240 }
241
242 /** Configure Regular Channel
243 */
244 sConfig.Channel = ADC_CHANNEL_18;
245 sConfig.Rank = ADC_REGULAR_RANK_1;
246 sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5;
247 sConfig.SingleDiff = ADC_SINGLE_ENDED;
248 sConfig.OffsetNumber = ADC_OFFSET_NONE;
249 sConfig.Offset = 0;
250 if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
251 {
252 Error_Handler();
253 }
254 /* USER CODE BEGIN ADC1_Init 2 */
255
256 /* USER CODE END ADC1_Init 2 */
257
258 }
259
260 /**
261 * @brief ADC2 Initialization Function
262 * @param None
263 * @retval None
264 */
MX_ADC2_Init(void)265 static void MX_ADC2_Init(void)
266 {
267
268 /* USER CODE BEGIN ADC2_Init 0 */
269
270 /* USER CODE END ADC2_Init 0 */
271
272 ADC_ChannelConfTypeDef sConfig = {0};
273
274 /* USER CODE BEGIN ADC2_Init 1 */
275
276 /* USER CODE END ADC2_Init 1 */
277
278 /** Common config
279 */
280 hadc2.Instance = ADC2;
281 hadc2.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV2;
282 hadc2.Init.Resolution = ADC_RESOLUTION_12B;
283 hadc2.Init.DataAlign = ADC_DATAALIGN_RIGHT;
284 hadc2.Init.ScanConvMode = ADC_SCAN_DISABLE;
285 hadc2.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
286 hadc2.Init.LowPowerAutoWait = DISABLE;
287 hadc2.Init.ContinuousConvMode = DISABLE;
288 hadc2.Init.NbrOfConversion = 1;
289 hadc2.Init.DiscontinuousConvMode = DISABLE;
290 hadc2.Init.ExternalTrigConv = ADC_SOFTWARE_START;
291 hadc2.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
292 hadc2.Init.DMAContinuousRequests = DISABLE;
293 hadc2.Init.SamplingMode = ADC_SAMPLING_MODE_NORMAL;
294 hadc2.Init.Overrun = ADC_OVR_DATA_PRESERVED;
295 hadc2.Init.OversamplingMode = DISABLE;
296 if (HAL_ADC_Init(&hadc2) != HAL_OK)
297 {
298 Error_Handler();
299 }
300
301 /** Configure Regular Channel
302 */
303 sConfig.Channel = ADC_CHANNEL_3;
304 sConfig.Rank = ADC_REGULAR_RANK_1;
305 sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5;
306 sConfig.SingleDiff = ADC_SINGLE_ENDED;
307 sConfig.OffsetNumber = ADC_OFFSET_NONE;
308 sConfig.Offset = 0;
309 if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK)
310 {
311 Error_Handler();
312 }
313 /* USER CODE BEGIN ADC2_Init 2 */
314
315 /* USER CODE END ADC2_Init 2 */
316
317 }
318
319 /**
320 * @brief ETH Initialization Function
321 * @param None
322 * @retval None
323 */
MX_ETH_Init(void)324 static void MX_ETH_Init(void)
325 {
326
327 /* USER CODE BEGIN ETH_Init 0 */
328
329 /* USER CODE END ETH_Init 0 */
330
331 static uint8_t MACAddr[6];
332
333 /* USER CODE BEGIN ETH_Init 1 */
334
335 /* USER CODE END ETH_Init 1 */
336 heth.Instance = ETH;
337 MACAddr[0] = 0x00;
338 MACAddr[1] = 0x80;
339 MACAddr[2] = 0xE1;
340 MACAddr[3] = 0x00;
341 MACAddr[4] = 0x00;
342 MACAddr[5] = 0x00;
343 heth.Init.MACAddr = &MACAddr[0];
344 heth.Init.MediaInterface = HAL_ETH_RMII_MODE;
345 heth.Init.TxDesc = DMATxDscrTab;
346 heth.Init.RxDesc = DMARxDscrTab;
347 heth.Init.RxBuffLen = 1524;
348
349 /* USER CODE BEGIN MACADDRESS */
350
351 /* USER CODE END MACADDRESS */
352
353 if (HAL_ETH_Init(&heth) != HAL_OK)
354 {
355 Error_Handler();
356 }
357
358 memset(&TxConfig, 0 , sizeof(ETH_TxPacketConfig));
359 TxConfig.Attributes = ETH_TX_PACKETS_FEATURES_CSUM | ETH_TX_PACKETS_FEATURES_CRCPAD;
360 TxConfig.ChecksumCtrl = ETH_CHECKSUM_IPHDR_PAYLOAD_INSERT_PHDR_CALC;
361 TxConfig.CRCPadCtrl = ETH_CRC_PAD_INSERT;
362 /* USER CODE BEGIN ETH_Init 2 */
363
364 /* USER CODE END ETH_Init 2 */
365
366 }
367
368 /**
369 * @brief ICACHE Initialization Function
370 * @param None
371 * @retval None
372 */
MX_ICACHE_Init(void)373 static void MX_ICACHE_Init(void)
374 {
375
376 /* USER CODE BEGIN ICACHE_Init 0 */
377
378 /* USER CODE END ICACHE_Init 0 */
379
380 /* USER CODE BEGIN ICACHE_Init 1 */
381
382 /* USER CODE END ICACHE_Init 1 */
383
384 /** Enable instruction cache (default 2-ways set associative cache)
385 */
386 if (HAL_ICACHE_Enable() != HAL_OK)
387 {
388 Error_Handler();
389 }
390 /* USER CODE BEGIN ICACHE_Init 2 */
391
392 /* USER CODE END ICACHE_Init 2 */
393
394 }
395
396 /**
397 * @brief LPUART1 Initialization Function
398 * @param None
399 * @retval None
400 */
MX_LPUART1_UART_Init(void)401 static void MX_LPUART1_UART_Init(void)
402 {
403
404 /* USER CODE BEGIN LPUART1_Init 0 */
405
406 /* USER CODE END LPUART1_Init 0 */
407
408 /* USER CODE BEGIN LPUART1_Init 1 */
409
410 /* USER CODE END LPUART1_Init 1 */
411 hlpuart1.Instance = LPUART1;
412 hlpuart1.Init.BaudRate = 209700;
413 hlpuart1.Init.WordLength = UART_WORDLENGTH_8B;
414 hlpuart1.Init.StopBits = UART_STOPBITS_1;
415 hlpuart1.Init.Parity = UART_PARITY_NONE;
416 hlpuart1.Init.Mode = UART_MODE_TX_RX;
417 hlpuart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
418 hlpuart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
419 hlpuart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
420 hlpuart1.FifoMode = UART_FIFOMODE_DISABLE;
421 if (HAL_UART_Init(&hlpuart1) != HAL_OK)
422 {
423 Error_Handler();
424 }
425 if (HAL_UARTEx_SetTxFifoThreshold(&hlpuart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
426 {
427 Error_Handler();
428 }
429 if (HAL_UARTEx_SetRxFifoThreshold(&hlpuart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
430 {
431 Error_Handler();
432 }
433 if (HAL_UARTEx_DisableFifoMode(&hlpuart1) != HAL_OK)
434 {
435 Error_Handler();
436 }
437 /* USER CODE BEGIN LPUART1_Init 2 */
438
439 /* USER CODE END LPUART1_Init 2 */
440
441 }
442
443 /**
444 * @brief USART3 Initialization Function
445 * @param None
446 * @retval None
447 */
MX_USART3_UART_Init(void)448 static void MX_USART3_UART_Init(void)
449 {
450
451 /* USER CODE BEGIN USART3_Init 0 */
452
453 /* USER CODE END USART3_Init 0 */
454
455 /* USER CODE BEGIN USART3_Init 1 */
456
457 /* USER CODE END USART3_Init 1 */
458 huart3.Instance = USART3;
459 huart3.Init.BaudRate = 115200;
460 huart3.Init.WordLength = UART_WORDLENGTH_8B;
461 huart3.Init.StopBits = UART_STOPBITS_1;
462 huart3.Init.Parity = UART_PARITY_NONE;
463 huart3.Init.Mode = UART_MODE_TX_RX;
464 huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
465 huart3.Init.OverSampling = UART_OVERSAMPLING_8;
466 huart3.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
467 huart3.Init.ClockPrescaler = UART_PRESCALER_DIV1;
468 huart3.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_RXINVERT_INIT;
469 huart3.AdvancedInit.RxPinLevelInvert = UART_ADVFEATURE_RXINV_ENABLE;
470 if (HAL_UART_Init(&huart3) != HAL_OK)
471 {
472 Error_Handler();
473 }
474 if (HAL_UARTEx_SetTxFifoThreshold(&huart3, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
475 {
476 Error_Handler();
477 }
478 if (HAL_UARTEx_SetRxFifoThreshold(&huart3, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
479 {
480 Error_Handler();
481 }
482 if (HAL_UARTEx_DisableFifoMode(&huart3) != HAL_OK)
483 {
484 Error_Handler();
485 }
486 /* USER CODE BEGIN USART3_Init 2 */
487
488 /* USER CODE END USART3_Init 2 */
489
490 }
491
492 /**
493 * @brief TIM1 Initialization Function
494 * @param None
495 * @retval None
496 */
MX_TIM1_Init(void)497 static void MX_TIM1_Init(void)
498 {
499
500 /* USER CODE BEGIN TIM1_Init 0 */
501
502 /* USER CODE END TIM1_Init 0 */
503
504 TIM_MasterConfigTypeDef sMasterConfig = {0};
505 TIM_OC_InitTypeDef sConfigOC = {0};
506 TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0};
507
508 /* USER CODE BEGIN TIM1_Init 1 */
509
510 /* USER CODE END TIM1_Init 1 */
511 htim1.Instance = TIM1;
512 htim1.Init.Prescaler = 0;
513 htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
514 htim1.Init.Period = 65535;
515 htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
516 htim1.Init.RepetitionCounter = 0;
517 htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
518 if (HAL_TIM_PWM_Init(&htim1) != HAL_OK)
519 {
520 Error_Handler();
521 }
522 sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
523 sMasterConfig.MasterOutputTrigger2 = TIM_TRGO2_RESET;
524 sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
525 if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK)
526 {
527 Error_Handler();
528 }
529 sConfigOC.OCMode = TIM_OCMODE_PWM1;
530 sConfigOC.Pulse = 0;
531 sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
532 sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
533 sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
534 sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
535 sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
536 if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
537 {
538 Error_Handler();
539 }
540 if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)
541 {
542 Error_Handler();
543 }
544 if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)
545 {
546 Error_Handler();
547 }
548 sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE;
549 sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE;
550 sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;
551 sBreakDeadTimeConfig.DeadTime = 0;
552 sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;
553 sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
554 sBreakDeadTimeConfig.BreakFilter = 0;
555 sBreakDeadTimeConfig.BreakAFMode = TIM_BREAK_AFMODE_INPUT;
556 sBreakDeadTimeConfig.Break2State = TIM_BREAK2_DISABLE;
557 sBreakDeadTimeConfig.Break2Polarity = TIM_BREAK2POLARITY_HIGH;
558 sBreakDeadTimeConfig.Break2Filter = 0;
559 sBreakDeadTimeConfig.Break2AFMode = TIM_BREAK_AFMODE_INPUT;
560 sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
561 if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK)
562 {
563 Error_Handler();
564 }
565 /* USER CODE BEGIN TIM1_Init 2 */
566
567 /* USER CODE END TIM1_Init 2 */
568 HAL_TIM_MspPostInit(&htim1);
569
570 }
571
572 /**
573 * @brief TIM3 Initialization Function
574 * @param None
575 * @retval None
576 */
MX_TIM3_Init(void)577 static void MX_TIM3_Init(void)
578 {
579
580 /* USER CODE BEGIN TIM3_Init 0 */
581
582 /* USER CODE END TIM3_Init 0 */
583
584 TIM_MasterConfigTypeDef sMasterConfig = {0};
585 TIM_OC_InitTypeDef sConfigOC = {0};
586
587 /* USER CODE BEGIN TIM3_Init 1 */
588
589 /* USER CODE END TIM3_Init 1 */
590 htim3.Instance = TIM3;
591 htim3.Init.Prescaler = 0;
592 htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
593 htim3.Init.Period = 65535;
594 htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
595 htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
596 if (HAL_TIM_PWM_Init(&htim3) != HAL_OK)
597 {
598 Error_Handler();
599 }
600 sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
601 sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
602 if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK)
603 {
604 Error_Handler();
605 }
606 sConfigOC.OCMode = TIM_OCMODE_PWM1;
607 sConfigOC.Pulse = 0;
608 sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
609 sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
610 if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)
611 {
612 Error_Handler();
613 }
614 /* USER CODE BEGIN TIM3_Init 2 */
615
616 /* USER CODE END TIM3_Init 2 */
617 HAL_TIM_MspPostInit(&htim3);
618
619 }
620
621 /**
622 * @brief TIM4 Initialization Function
623 * @param None
624 * @retval None
625 */
MX_TIM4_Init(void)626 static void MX_TIM4_Init(void)
627 {
628
629 /* USER CODE BEGIN TIM4_Init 0 */
630
631 /* USER CODE END TIM4_Init 0 */
632
633 TIM_MasterConfigTypeDef sMasterConfig = {0};
634 TIM_OC_InitTypeDef sConfigOC = {0};
635
636 /* USER CODE BEGIN TIM4_Init 1 */
637
638 /* USER CODE END TIM4_Init 1 */
639 htim4.Instance = TIM4;
640 htim4.Init.Prescaler = 0;
641 htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
642 htim4.Init.Period = 65535;
643 htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
644 htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
645 if (HAL_TIM_PWM_Init(&htim4) != HAL_OK)
646 {
647 Error_Handler();
648 }
649 sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
650 sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
651 if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK)
652 {
653 Error_Handler();
654 }
655 sConfigOC.OCMode = TIM_OCMODE_PWM1;
656 sConfigOC.Pulse = 0;
657 sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
658 sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
659 if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)
660 {
661 Error_Handler();
662 }
663 if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4) != HAL_OK)
664 {
665 Error_Handler();
666 }
667 /* USER CODE BEGIN TIM4_Init 2 */
668
669 /* USER CODE END TIM4_Init 2 */
670 HAL_TIM_MspPostInit(&htim4);
671
672 }
673
674 /**
675 * @brief UCPD1 Initialization Function
676 * @param None
677 * @retval None
678 */
MX_UCPD1_Init(void)679 static void MX_UCPD1_Init(void)
680 {
681
682 /* USER CODE BEGIN UCPD1_Init 0 */
683
684 /* USER CODE END UCPD1_Init 0 */
685
686 LL_GPIO_InitTypeDef GPIO_InitStruct = {0};
687
688 /* Peripheral clock enable */
689 LL_APB1_GRP2_EnableClock(LL_APB1_GRP2_PERIPH_UCPD1);
690
691 LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_GPIOB);
692 /**UCPD1 GPIO Configuration
693 PB13 ------> UCPD1_CC1
694 PB14 ------> UCPD1_CC2
695 */
696 GPIO_InitStruct.Pin = LL_GPIO_PIN_13|LL_GPIO_PIN_14;
697 GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG;
698 GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
699 LL_GPIO_Init(GPIOB, &GPIO_InitStruct);
700
701 /* USER CODE BEGIN UCPD1_Init 1 */
702
703 /* USER CODE END UCPD1_Init 1 */
704 /* USER CODE BEGIN UCPD1_Init 2 */
705
706 /* USER CODE END UCPD1_Init 2 */
707
708 }
709
710 /**
711 * @brief USB Initialization Function
712 * @param None
713 * @retval None
714 */
MX_USB_PCD_Init(void)715 static void MX_USB_PCD_Init(void)
716 {
717
718 /* USER CODE BEGIN USB_Init 0 */
719
720 /* USER CODE END USB_Init 0 */
721
722 /* USER CODE BEGIN USB_Init 1 */
723
724 /* USER CODE END USB_Init 1 */
725 hpcd_USB_DRD_FS.Instance = USB_DRD_FS;
726 hpcd_USB_DRD_FS.Init.dev_endpoints = 8;
727 hpcd_USB_DRD_FS.Init.speed = USBD_FS_SPEED;
728 hpcd_USB_DRD_FS.Init.phy_itface = PCD_PHY_EMBEDDED;
729 hpcd_USB_DRD_FS.Init.Sof_enable = DISABLE;
730 hpcd_USB_DRD_FS.Init.low_power_enable = DISABLE;
731 hpcd_USB_DRD_FS.Init.lpm_enable = DISABLE;
732 hpcd_USB_DRD_FS.Init.battery_charging_enable = DISABLE;
733 hpcd_USB_DRD_FS.Init.vbus_sensing_enable = DISABLE;
734 hpcd_USB_DRD_FS.Init.bulk_doublebuffer_enable = DISABLE;
735 hpcd_USB_DRD_FS.Init.iso_singlebuffer_enable = DISABLE;
736 if (HAL_PCD_Init(&hpcd_USB_DRD_FS) != HAL_OK)
737 {
738 Error_Handler();
739 }
740 /* USER CODE BEGIN USB_Init 2 */
741
742 /* USER CODE END USB_Init 2 */
743
744 }
745
746 /**
747 * @brief GPIO Initialization Function
748 * @param None
749 * @retval None
750 */
MX_GPIO_Init(void)751 static void MX_GPIO_Init(void)
752 {
753 GPIO_InitTypeDef GPIO_InitStruct = {0};
754 /* USER CODE BEGIN MX_GPIO_Init_1 */
755 /* USER CODE END MX_GPIO_Init_1 */
756
757 /* GPIO Ports Clock Enable */
758 __HAL_RCC_GPIOE_CLK_ENABLE();
759 __HAL_RCC_GPIOC_CLK_ENABLE();
760 __HAL_RCC_GPIOF_CLK_ENABLE();
761 __HAL_RCC_GPIOH_CLK_ENABLE();
762 __HAL_RCC_GPIOA_CLK_ENABLE();
763 __HAL_RCC_GPIOB_CLK_ENABLE();
764 __HAL_RCC_GPIOD_CLK_ENABLE();
765 __HAL_RCC_GPIOG_CLK_ENABLE();
766
767 /*Configure GPIO pin Output Level */
768 HAL_GPIO_WritePin(LED2_YELLOW_GPIO_Port, LED2_YELLOW_Pin, GPIO_PIN_RESET);
769
770 /*Configure GPIO pin Output Level */
771 HAL_GPIO_WritePin(LED1_GREEN_GPIO_Port, LED1_GREEN_Pin, GPIO_PIN_RESET);
772
773 /*Configure GPIO pin Output Level */
774 HAL_GPIO_WritePin(LED3_RED_GPIO_Port, LED3_RED_Pin, GPIO_PIN_RESET);
775
776 /*Configure GPIO pin : USER_BUTTON_Pin */
777 GPIO_InitStruct.Pin = USER_BUTTON_Pin;
778 GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
779 GPIO_InitStruct.Pull = GPIO_NOPULL;
780 HAL_GPIO_Init(USER_BUTTON_GPIO_Port, &GPIO_InitStruct);
781
782 /*Configure GPIO pin : LED2_YELLOW_Pin */
783 GPIO_InitStruct.Pin = LED2_YELLOW_Pin;
784 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
785 GPIO_InitStruct.Pull = GPIO_NOPULL;
786 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
787 HAL_GPIO_Init(LED2_YELLOW_GPIO_Port, &GPIO_InitStruct);
788
789 /*Configure GPIO pin : LED1_GREEN_Pin */
790 GPIO_InitStruct.Pin = LED1_GREEN_Pin;
791 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
792 GPIO_InitStruct.Pull = GPIO_NOPULL;
793 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
794 HAL_GPIO_Init(LED1_GREEN_GPIO_Port, &GPIO_InitStruct);
795
796 /*Configure GPIO pin : LED3_RED_Pin */
797 GPIO_InitStruct.Pin = LED3_RED_Pin;
798 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
799 GPIO_InitStruct.Pull = GPIO_NOPULL;
800 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
801 HAL_GPIO_Init(LED3_RED_GPIO_Port, &GPIO_InitStruct);
802
803 /*Configure GPIO pin : UCPD_FLT_Pin */
804 GPIO_InitStruct.Pin = UCPD_FLT_Pin;
805 GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
806 GPIO_InitStruct.Pull = GPIO_NOPULL;
807 HAL_GPIO_Init(UCPD_FLT_GPIO_Port, &GPIO_InitStruct);
808
809 /* USER CODE BEGIN MX_GPIO_Init_2 */
810 /* USER CODE END MX_GPIO_Init_2 */
811 }
812
813 /* USER CODE BEGIN 4 */
814
815 /* USER CODE END 4 */
816
817 /**
818 * @brief This function is executed in case of error occurrence.
819 * @retval None
820 */
Error_Handler(void)821 void Error_Handler(void)
822 {
823 /* USER CODE BEGIN Error_Handler_Debug */
824 /* User can add his own implementation to report the HAL error return state */
825 __disable_irq();
826 while (1)
827 {
828 }
829 /* USER CODE END Error_Handler_Debug */
830 }
831
832 #ifdef USE_FULL_ASSERT
833 /**
834 * @brief Reports the name of the source file and the source line number
835 * where the assert_param error has occurred.
836 * @param file: pointer to the source file name
837 * @param line: assert_param error line source number
838 * @retval None
839 */
assert_failed(uint8_t * file,uint32_t line)840 void assert_failed(uint8_t *file, uint32_t line)
841 {
842 /* USER CODE BEGIN 6 */
843 /* User can add his own implementation to report the file name and line number,
844 ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
845 /* USER CODE END 6 */
846 }
847 #endif /* USE_FULL_ASSERT */
848