STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
usbd_conf.c
Go to the documentation of this file.
1/* USER CODE BEGIN Header */
2/**
3 ******************************************************************************
4 * @file : Target/usbd_conf.c
5 * @version : v1.0_Cube
6 * @brief : This file implements the board support package for the USB device library
7 ******************************************************************************
8 * @attention
9 *
10 * Copyright (c) 2026 STMicroelectronics.
11 * All rights reserved.
12 *
13 * This software is licensed under terms that can be found in the LICENSE file
14 * in the root directory of this software component.
15 * If no LICENSE file comes with this software, it is provided AS-IS.
16 *
17 ******************************************************************************
18 */
19/* USER CODE END Header */
20
21/* Includes ------------------------------------------------------------------*/
22#include "stm32h7xx.h"
23#include "stm32h7xx_hal.h"
24#include "usbd_def.h"
25#include "usbd_core.h"
26#include "usbd_cdc.h"
27
28/* USER CODE BEGIN Includes */
29#include <stdbool.h>
30/* USER CODE END Includes */
31
32/* Private typedef -----------------------------------------------------------*/
33/* Private define ------------------------------------------------------------*/
34/* Private macro -------------------------------------------------------------*/
35
36/* USER CODE BEGIN PV */
37/* External status flag defined in usbd_cdc_if.c */
38extern volatile bool g_usb_terminal_connected;
39/* USER CODE END PV */
40
41PCD_HandleTypeDef hpcd_USB_OTG_HS;
42void Error_Handler(void);
43
44/* External functions --------------------------------------------------------*/
45
46/* USER CODE BEGIN 0 */
47
48/* USER CODE END 0 */
49
50/* USER CODE BEGIN PFP */
51/* Private function prototypes -----------------------------------------------*/
53
54/* USER CODE END PFP */
55
56/* Private functions ---------------------------------------------------------*/
57
58/* USER CODE BEGIN 1 */
59/* USER CODE END 1 */
60
61/*******************************************************************************
62 LL Driver Callbacks (PCD -> USB Device Library)
63*******************************************************************************/
64/* MSP Init */
65
66void HAL_PCD_MspInit(PCD_HandleTypeDef* pcdHandle)
67{
68 RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
69 if(pcdHandle->Instance==USB_OTG_HS)
70 {
71 /* USER CODE BEGIN USB_OTG_HS_MspInit 0 */
72
73 /* USER CODE END USB_OTG_HS_MspInit 0 */
74
75 /** Initializes the peripherals clock
76 */
77 PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USB;
78 PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_HSI48;
79 if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
80 {
82 }
83
84 /** Enable USB Voltage detector
85 */
87
88 /* Peripheral clock enable */
89 __HAL_RCC_USB_OTG_HS_CLK_ENABLE();
90
91 /* Peripheral interrupt init */
96 /* USER CODE BEGIN USB_OTG_HS_MspInit 1 */
97
98 /* USER CODE END USB_OTG_HS_MspInit 1 */
99 }
100}
101
102void HAL_PCD_MspDeInit(PCD_HandleTypeDef* pcdHandle)
103{
104 if(pcdHandle->Instance==USB_OTG_HS)
105 {
106 /* USER CODE BEGIN USB_OTG_HS_MspDeInit 0 */
107
108 /* USER CODE END USB_OTG_HS_MspDeInit 0 */
109 /* Peripheral clock disable */
110 __HAL_RCC_USB_OTG_HS_CLK_DISABLE();
111
112 /* Peripheral interrupt Deinit*/
114
116
117 /* USER CODE BEGIN USB_OTG_HS_MspDeInit 1 */
118
119 /* USER CODE END USB_OTG_HS_MspDeInit 1 */
120 }
121}
122
123/**
124 * @brief Setup stage callback
125 * @param hpcd: PCD handle
126 * @retval None
127 */
128#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
129static void PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd)
130#else
131void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd)
132#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
133{
134 USBD_LL_SetupStage((USBD_HandleTypeDef*)hpcd->pData, (uint8_t *)hpcd->Setup);
135}
136
137/**
138 * @brief Data Out stage callback.
139 * @param hpcd: PCD handle
140 * @param epnum: Endpoint number
141 * @retval None
142 */
143#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
144static void PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
145#else
146void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
147#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
148{
149 USBD_LL_DataOutStage((USBD_HandleTypeDef*)hpcd->pData, epnum, hpcd->OUT_ep[epnum].xfer_buff);
150}
151
152/**
153 * @brief Data In stage callback.
154 * @param hpcd: PCD handle
155 * @param epnum: Endpoint number
156 * @retval None
157 */
158#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
159static void PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
160#else
161void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
162#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
163{
164 USBD_LL_DataInStage((USBD_HandleTypeDef*)hpcd->pData, epnum, hpcd->IN_ep[epnum].xfer_buff);
165}
166
167/**
168 * @brief SOF callback.
169 * @param hpcd: PCD handle
170 * @retval None
171 */
172#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
173static void PCD_SOFCallback(PCD_HandleTypeDef *hpcd)
174#else
175void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd)
176#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
177{
178 USBD_LL_SOF((USBD_HandleTypeDef*)hpcd->pData);
179}
180
181/**
182 * @brief Reset callback.
183 * @param hpcd: PCD handle
184 * @retval None
185 */
186#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
187static void PCD_ResetCallback(PCD_HandleTypeDef *hpcd)
188#else
189void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd)
190#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
191{
193
194 if ( hpcd->Init.speed == PCD_SPEED_HIGH)
195 {
196 speed = USBD_SPEED_HIGH;
197 }
198 else if ( hpcd->Init.speed == PCD_SPEED_FULL)
199 {
200 speed = USBD_SPEED_FULL;
201 }
202 else
203 {
205 }
206 /* Set Speed. */
207 USBD_LL_SetSpeed((USBD_HandleTypeDef*)hpcd->pData, speed);
208
209 /* Reset Device. */
210 USBD_LL_Reset((USBD_HandleTypeDef*)hpcd->pData);
211}
212
213/**
214 * @brief Suspend callback.
215 * When Low power mode is enabled the debug cannot be used (IAR, Keil doesn't support it)
216 * @param hpcd: PCD handle
217 * @retval None
218 */
219#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
220static void PCD_SuspendCallback(PCD_HandleTypeDef *hpcd)
221#else
222void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd)
223#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
224{
225 /* Inform USB library that core enters in suspend Mode. */
226 USBD_LL_Suspend((USBD_HandleTypeDef*)hpcd->pData);
227 __HAL_PCD_GATE_PHYCLOCK(hpcd);
228 /* Enter in STOP mode. */
229 /* USER CODE BEGIN 2 */
230 if (hpcd->Init.low_power_enable)
231 {
232 /* Set SLEEPDEEP bit and SleepOnExit of Cortex System Control Register. */
233 SCB->SCR |= (uint32_t)((uint32_t)(SCB_SCR_SLEEPDEEP_Msk | SCB_SCR_SLEEPONEXIT_Msk));
234 }
235 /* USER CODE END 2 */
236}
237
238/**
239 * @brief Resume callback.
240 * When Low power mode is enabled the debug cannot be used (IAR, Keil doesn't support it)
241 * @param hpcd: PCD handle
242 * @retval None
243 */
244#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
245static void PCD_ResumeCallback(PCD_HandleTypeDef *hpcd)
246#else
247void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd)
248#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
249{
250 /* USER CODE BEGIN 3 */
251
252 /* USER CODE END 3 */
253 USBD_LL_Resume((USBD_HandleTypeDef*)hpcd->pData);
254}
255
256/**
257 * @brief ISOOUTIncomplete callback.
258 * @param hpcd: PCD handle
259 * @param epnum: Endpoint number
260 * @retval None
261 */
262#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
263static void PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
264#else
265void HAL_PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
266#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
267{
268 USBD_LL_IsoOUTIncomplete((USBD_HandleTypeDef*)hpcd->pData, epnum);
269}
270
271/**
272 * @brief ISOINIncomplete callback.
273 * @param hpcd: PCD handle
274 * @param epnum: Endpoint number
275 * @retval None
276 */
277#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
278static void PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
279#else
280void HAL_PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
281#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
282{
283 USBD_LL_IsoINIncomplete((USBD_HandleTypeDef*)hpcd->pData, epnum);
284}
285
286/**
287 * @brief Connect callback.
288 * @param hpcd: PCD handle
289 * @retval None
290 */
291#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
292static void PCD_ConnectCallback(PCD_HandleTypeDef *hpcd)
293#else
294void HAL_PCD_ConnectCallback(PCD_HandleTypeDef *hpcd)
295#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
296{
298}
299
300/**
301 * @brief Disconnect callback.
302 * @param hpcd: PCD handle
303 * @retval None
304 */
305#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
306static void PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd)
307#else
308void HAL_PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd)
309#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
310{
312}
313
314/*******************************************************************************
315 LL Driver Interface (USB Device Library --> PCD)
316*******************************************************************************/
317
318/**
319 * @brief Initializes the low level portion of the device driver.
320 * @param pdev: Device handle
321 * @retval USBD status
322 */
324{
325 /* Init USB Ip. */
326 if (pdev->id == DEVICE_HS) {
327 /* Link the driver to the stack. */
328 hpcd_USB_OTG_HS.pData = pdev;
329 pdev->pData = &hpcd_USB_OTG_HS;
330
331 hpcd_USB_OTG_HS.Instance = USB_OTG_HS;
332 hpcd_USB_OTG_HS.Init.dev_endpoints = 9;
333 hpcd_USB_OTG_HS.Init.speed = PCD_SPEED_FULL;
334 hpcd_USB_OTG_HS.Init.dma_enable = DISABLE;
335 hpcd_USB_OTG_HS.Init.phy_itface = USB_OTG_EMBEDDED_PHY;
336 hpcd_USB_OTG_HS.Init.Sof_enable = DISABLE;
337 hpcd_USB_OTG_HS.Init.low_power_enable = DISABLE;
338 hpcd_USB_OTG_HS.Init.lpm_enable = DISABLE;
339 hpcd_USB_OTG_HS.Init.vbus_sensing_enable = DISABLE;
340 hpcd_USB_OTG_HS.Init.use_dedicated_ep1 = DISABLE;
341 hpcd_USB_OTG_HS.Init.use_external_vbus = DISABLE;
342 if (HAL_PCD_Init(&hpcd_USB_OTG_HS) != HAL_OK)
343 {
344 Error_Handler( );
345 }
346
347#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
348 /* Register USB PCD CallBacks */
349 HAL_PCD_RegisterCallback(&hpcd_USB_OTG_HS, HAL_PCD_SOF_CB_ID, PCD_SOFCallback);
350 HAL_PCD_RegisterCallback(&hpcd_USB_OTG_HS, HAL_PCD_SETUPSTAGE_CB_ID, PCD_SetupStageCallback);
351 HAL_PCD_RegisterCallback(&hpcd_USB_OTG_HS, HAL_PCD_RESET_CB_ID, PCD_ResetCallback);
352 HAL_PCD_RegisterCallback(&hpcd_USB_OTG_HS, HAL_PCD_SUSPEND_CB_ID, PCD_SuspendCallback);
353 HAL_PCD_RegisterCallback(&hpcd_USB_OTG_HS, HAL_PCD_RESUME_CB_ID, PCD_ResumeCallback);
354 HAL_PCD_RegisterCallback(&hpcd_USB_OTG_HS, HAL_PCD_CONNECT_CB_ID, PCD_ConnectCallback);
355 HAL_PCD_RegisterCallback(&hpcd_USB_OTG_HS, HAL_PCD_DISCONNECT_CB_ID, PCD_DisconnectCallback);
356
357 HAL_PCD_RegisterDataOutStageCallback(&hpcd_USB_OTG_HS, PCD_DataOutStageCallback);
358 HAL_PCD_RegisterDataInStageCallback(&hpcd_USB_OTG_HS, PCD_DataInStageCallback);
359 HAL_PCD_RegisterIsoOutIncpltCallback(&hpcd_USB_OTG_HS, PCD_ISOOUTIncompleteCallback);
360 HAL_PCD_RegisterIsoInIncpltCallback(&hpcd_USB_OTG_HS, PCD_ISOINIncompleteCallback);
361#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
362 /* USER CODE BEGIN TxRx_HS_Configuration */
363 HAL_PCDEx_SetRxFiFo(&hpcd_USB_OTG_HS, 0x200);
364 HAL_PCDEx_SetTxFiFo(&hpcd_USB_OTG_HS, 0, 0x80);
365 HAL_PCDEx_SetTxFiFo(&hpcd_USB_OTG_HS, 1, 0x174);
366 /* USER CODE END TxRx_HS_Configuration */
367 }
368 return USBD_OK;
369}
370
371/**
372 * @brief De-Initializes the low level portion of the device driver.
373 * @param pdev: Device handle
374 * @retval USBD status
375 */
377{
378 HAL_StatusTypeDef hal_status = HAL_OK;
379 USBD_StatusTypeDef usb_status = USBD_OK;
380
381 hal_status = HAL_PCD_DeInit(pdev->pData);
382
383 usb_status = USBD_Get_USB_Status(hal_status);
384
385 return usb_status;
386}
387
388/**
389 * @brief Starts the low level portion of the device driver.
390 * @param pdev: Device handle
391 * @retval USBD status
392 */
394{
395 HAL_StatusTypeDef hal_status = HAL_OK;
396 USBD_StatusTypeDef usb_status = USBD_OK;
397
398 hal_status = HAL_PCD_Start(pdev->pData);
399
400 usb_status = USBD_Get_USB_Status(hal_status);
401
402 return usb_status;
403}
404
405/**
406 * @brief Stops the low level portion of the device driver.
407 * @param pdev: Device handle
408 * @retval USBD status
409 */
411{
412 HAL_StatusTypeDef hal_status = HAL_OK;
413 USBD_StatusTypeDef usb_status = USBD_OK;
414
415 hal_status = HAL_PCD_Stop(pdev->pData);
416
417 usb_status = USBD_Get_USB_Status(hal_status);
418
419 return usb_status;
420}
421
422/**
423 * @brief Opens an endpoint of the low level driver.
424 * @param pdev: Device handle
425 * @param ep_addr: Endpoint number
426 * @param ep_type: Endpoint type
427 * @param ep_mps: Endpoint max packet size
428 * @retval USBD status
429 */
430USBD_StatusTypeDef USBD_LL_OpenEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t ep_type, uint16_t ep_mps)
431{
432 HAL_StatusTypeDef hal_status = HAL_OK;
433 USBD_StatusTypeDef usb_status = USBD_OK;
434
435 hal_status = HAL_PCD_EP_Open(pdev->pData, ep_addr, ep_mps, ep_type);
436
437 usb_status = USBD_Get_USB_Status(hal_status);
438
439 return usb_status;
440}
441
442/**
443 * @brief Closes an endpoint of the low level driver.
444 * @param pdev: Device handle
445 * @param ep_addr: Endpoint number
446 * @retval USBD status
447 */
449{
450 HAL_StatusTypeDef hal_status = HAL_OK;
451 USBD_StatusTypeDef usb_status = USBD_OK;
452
453 hal_status = HAL_PCD_EP_Close(pdev->pData, ep_addr);
454
455 usb_status = USBD_Get_USB_Status(hal_status);
456
457 return usb_status;
458}
459
460/**
461 * @brief Flushes an endpoint of the Low Level Driver.
462 * @param pdev: Device handle
463 * @param ep_addr: Endpoint number
464 * @retval USBD status
465 */
467{
468 HAL_StatusTypeDef hal_status = HAL_OK;
469 USBD_StatusTypeDef usb_status = USBD_OK;
470
471 hal_status = HAL_PCD_EP_Flush(pdev->pData, ep_addr);
472
473 usb_status = USBD_Get_USB_Status(hal_status);
474
475 return usb_status;
476}
477
478/**
479 * @brief Sets a Stall condition on an endpoint of the Low Level Driver.
480 * @param pdev: Device handle
481 * @param ep_addr: Endpoint number
482 * @retval USBD status
483 */
485{
486 HAL_StatusTypeDef hal_status = HAL_OK;
487 USBD_StatusTypeDef usb_status = USBD_OK;
488
489 hal_status = HAL_PCD_EP_SetStall(pdev->pData, ep_addr);
490
491 usb_status = USBD_Get_USB_Status(hal_status);
492
493 return usb_status;
494}
495
496/**
497 * @brief Clears a Stall condition on an endpoint of the Low Level Driver.
498 * @param pdev: Device handle
499 * @param ep_addr: Endpoint number
500 * @retval USBD status
501 */
503{
504 HAL_StatusTypeDef hal_status = HAL_OK;
505 USBD_StatusTypeDef usb_status = USBD_OK;
506
507 hal_status = HAL_PCD_EP_ClrStall(pdev->pData, ep_addr);
508
509 usb_status = USBD_Get_USB_Status(hal_status);
510
511 return usb_status;
512}
513
514/**
515 * @brief Returns Stall condition.
516 * @param pdev: Device handle
517 * @param ep_addr: Endpoint number
518 * @retval Stall (1: Yes, 0: No)
519 */
520uint8_t USBD_LL_IsStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
521{
522 PCD_HandleTypeDef *hpcd = (PCD_HandleTypeDef*) pdev->pData;
523
524 if((ep_addr & 0x80) == 0x80)
525 {
526 return hpcd->IN_ep[ep_addr & 0x7F].is_stall;
527 }
528 else
529 {
530 return hpcd->OUT_ep[ep_addr & 0x7F].is_stall;
531 }
532}
533
534/**
535 * @brief Assigns a USB address to the device.
536 * @param pdev: Device handle
537 * @param dev_addr: Device address
538 * @retval USBD status
539 */
541{
542 HAL_StatusTypeDef hal_status = HAL_OK;
543 USBD_StatusTypeDef usb_status = USBD_OK;
544
545 hal_status = HAL_PCD_SetAddress(pdev->pData, dev_addr);
546
547 usb_status = USBD_Get_USB_Status(hal_status);
548
549 return usb_status;
550}
551
552/**
553 * @brief Transmits data over an endpoint.
554 * @param pdev: Device handle
555 * @param ep_addr: Endpoint number
556 * @param pbuf: Pointer to data to be sent
557 * @param size: Data size
558 * @retval USBD status
559 */
560USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint32_t size)
561{
562 HAL_StatusTypeDef hal_status = HAL_OK;
563 USBD_StatusTypeDef usb_status = USBD_OK;
564
565 hal_status = HAL_PCD_EP_Transmit(pdev->pData, ep_addr, pbuf, size);
566
567 usb_status = USBD_Get_USB_Status(hal_status);
568
569 return usb_status;
570}
571
572/**
573 * @brief Prepares an endpoint for reception.
574 * @param pdev: Device handle
575 * @param ep_addr: Endpoint number
576 * @param pbuf: Pointer to data to be received
577 * @param size: Data size
578 * @retval USBD status
579 */
580USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint32_t size)
581{
582 HAL_StatusTypeDef hal_status = HAL_OK;
583 USBD_StatusTypeDef usb_status = USBD_OK;
584
585 hal_status = HAL_PCD_EP_Receive(pdev->pData, ep_addr, pbuf, size);
586
587 usb_status = USBD_Get_USB_Status(hal_status);
588
589 return usb_status;
590}
591
592/**
593 * @brief Returns the last transferred packet size.
594 * @param pdev: Device handle
595 * @param ep_addr: Endpoint number
596 * @retval Received Data Size
597 */
598uint32_t USBD_LL_GetRxDataSize(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
599{
600 return HAL_PCD_EP_GetRxCount((PCD_HandleTypeDef*) pdev->pData, ep_addr);
601}
602
603#ifdef USBD_HS_TESTMODE_ENABLE
604/**
605 * @brief Set High speed Test mode.
606 * @param pdev: Device handle
607 * @param testmode: test mode
608 * @retval USBD Status
609 */
610USBD_StatusTypeDef USBD_LL_SetTestMode(USBD_HandleTypeDef *pdev, uint8_t testmode)
611{
612 UNUSED(pdev);
613 UNUSED(testmode);
614
615 return USBD_OK;
616}
617#endif /* USBD_HS_TESTMODE_ENABLE */
618/**
619 * @brief Static single allocation.
620 * @param size: Size of allocated memory
621 * @retval None
622 */
623void *USBD_static_malloc(uint32_t size)
624{
625 UNUSED(size);
626 static uint32_t mem[(sizeof(USBD_CDC_HandleTypeDef)/4)+1];/* On 32-bit boundary */
627 return mem;
628}
629
630/**
631 * @brief Dummy memory free
632 * @param p: Pointer to allocated memory address
633 * @retval None
634 */
636{
637 UNUSED(p);
638}
639
640/**
641 * @brief Delays routine for the USB device library.
642 * @param Delay: Delay in ms
643 * @retval None
644 */
645void USBD_LL_Delay(uint32_t Delay)
646{
647 HAL_Delay(Delay);
648}
649
650/**
651 * @brief Returns the USB status depending on the HAL status:
652 * @param hal_status: HAL status
653 * @retval USB status
654 */
656{
657 USBD_StatusTypeDef usb_status = USBD_OK;
658
659 switch (hal_status)
660 {
661 case HAL_OK :
662 usb_status = USBD_OK;
663 break;
664 case HAL_ERROR :
665 usb_status = USBD_FAIL;
666 break;
667 case HAL_BUSY :
668 usb_status = USBD_BUSY;
669 break;
670 case HAL_TIMEOUT :
671 usb_status = USBD_FAIL;
672 break;
673 default :
674 usb_status = USBD_FAIL;
675 break;
676 }
677 return usb_status;
678}
int32_t p
Definition flight_e2e.c:78
#define SCB_SCR_SLEEPONEXIT_Msk
SCB SCR: SLEEPONEXIT Mask.
#define SCB_SCR_SLEEPDEEP_Msk
SCB SCR: SLEEPDEEP Mask.
#define SCB
SCB configuration struct.
void HAL_NVIC_DisableIRQ(IRQn_Type IRQn)
void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)
void HAL_NVIC_EnableIRQ(IRQn_Type IRQn)
@ DISABLE
Definition stm32h7xx.h:188
void HAL_Delay(uint32_t Delay)
This function provides minimum delay (in milliseconds) based on variable incremented.
void HAL_PWREx_EnableUSBVoltageDetector(void)
#define USB_OTG_HS
@ OTG_HS_EP1_IN_IRQn
USB OTG HS End Point 1 In global interrupt.
@ OTG_HS_IRQn
USB OTG HS global interrupt.
HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit)
#define RCC_PERIPHCLK_USB
#define RCC_USBCLKSOURCE_HSI48
volatile bool g_usb_terminal_connected
Definition usbd_cdc_if.c:37
#define DEVICE_HS
Definition usbd_conf.h:81
void USBD_static_free(void *p)
Dummy memory free.
Definition usbd_conf.c:635
void * USBD_static_malloc(uint32_t size)
Static single allocation.
Definition usbd_conf.c:623
USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint32_t size)
Transmits data over an endpoint.
Definition usbd_conf.c:560
USBD_StatusTypeDef USBD_LL_DevDisconnected(USBD_HandleTypeDef *pdev)
USBD_LL_DevDisconnected Handle device disconnection event.
Definition usbd_core.c:1001
USBD_StatusTypeDef USBD_LL_DataInStage(USBD_HandleTypeDef *pdev, uint8_t epnum, uint8_t *pdata)
USBD_LL_DataInStage Handle data in stage.
Definition usbd_core.c:684
USBD_StatusTypeDef USBD_LL_FlushEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
Flushes an endpoint of the Low Level Driver.
Definition usbd_conf.c:466
USBD_StatusTypeDef USBD_LL_DataOutStage(USBD_HandleTypeDef *pdev, uint8_t epnum, uint8_t *pdata)
USBD_LL_DataOutStage Handle data OUT stage.
Definition usbd_core.c:586
USBD_StatusTypeDef USBD_LL_IsoOUTIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum)
USBD_LL_IsoOUTIncomplete Handle iso out incomplete event.
Definition usbd_core.c:962
USBD_StatusTypeDef USBD_LL_Init(USBD_HandleTypeDef *pdev)
Initializes the low level portion of the device driver.
Definition usbd_conf.c:323
uint8_t USBD_LL_IsStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
Returns Stall condition.
Definition usbd_conf.c:520
void USBD_LL_Delay(uint32_t Delay)
Delays routine for the USB device library.
Definition usbd_conf.c:645
USBD_StatusTypeDef USBD_LL_Start(USBD_HandleTypeDef *pdev)
Starts the low level portion of the device driver.
Definition usbd_conf.c:393
USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint32_t size)
Prepares an endpoint for reception.
Definition usbd_conf.c:580
USBD_StatusTypeDef USBD_LL_IsoINIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum)
USBD_LL_IsoINIncomplete Handle iso in incomplete event.
Definition usbd_core.c:936
USBD_StatusTypeDef USBD_LL_Suspend(USBD_HandleTypeDef *pdev)
USBD_LL_Suspend Handle Suspend event.
Definition usbd_core.c:859
USBD_StatusTypeDef USBD_LL_Reset(USBD_HandleTypeDef *pdev)
USBD_LL_Reset Handle Reset event.
Definition usbd_core.c:777
USBD_StatusTypeDef USBD_LL_DeInit(USBD_HandleTypeDef *pdev)
De-Initializes the low level portion of the device driver.
Definition usbd_conf.c:376
USBD_StatusTypeDef USBD_LL_SetSpeed(USBD_HandleTypeDef *pdev, USBD_SpeedTypeDef speed)
USBD_LL_SetSpeed Handle Reset event.
Definition usbd_core.c:845
USBD_StatusTypeDef USBD_LL_DevConnected(USBD_HandleTypeDef *pdev)
USBD_LL_DevConnected Handle device connection event.
Definition usbd_core.c:987
USBD_StatusTypeDef USBD_LL_StallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
Sets a Stall condition on an endpoint of the Low Level Driver.
Definition usbd_conf.c:484
USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup)
USBD_LL_SetupStage Handle the setup stage.
Definition usbd_core.c:546
USBD_StatusTypeDef USBD_LL_Stop(USBD_HandleTypeDef *pdev)
Stops the low level portion of the device driver.
Definition usbd_conf.c:410
USBD_StatusTypeDef USBD_LL_SOF(USBD_HandleTypeDef *pdev)
USBD_LL_SOF Handle SOF event.
Definition usbd_core.c:893
USBD_StatusTypeDef USBD_LL_Resume(USBD_HandleTypeDef *pdev)
USBD_LL_Resume Handle Resume event.
Definition usbd_core.c:877
USBD_StatusTypeDef USBD_LL_SetUSBAddress(USBD_HandleTypeDef *pdev, uint8_t dev_addr)
Assigns a USB address to the device.
Definition usbd_conf.c:540
USBD_StatusTypeDef USBD_LL_ClearStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
Clears a Stall condition on an endpoint of the Low Level Driver.
Definition usbd_conf.c:502
USBD_StatusTypeDef USBD_LL_OpenEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t ep_type, uint16_t ep_mps)
Opens an endpoint of the low level driver.
Definition usbd_conf.c:430
USBD_StatusTypeDef USBD_LL_CloseEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
Closes an endpoint of the low level driver.
Definition usbd_conf.c:448
uint32_t USBD_LL_GetRxDataSize(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
Returns the last transferred packet size.
Definition usbd_conf.c:598
struct _USBD_HandleTypeDef USBD_HandleTypeDef
USBD_SpeedTypeDef
Definition usbd_def.h:272
USBD_StatusTypeDef
Definition usbd_def.h:280
@ USBD_SPEED_FULL
Definition usbd_def.h:274
@ USBD_SPEED_HIGH
Definition usbd_def.h:273
@ USBD_FAIL
Definition usbd_def.h:284
@ USBD_OK
Definition usbd_def.h:281
@ USBD_BUSY
Definition usbd_def.h:282
CMSIS STM32H7xx Device Peripheral Access Layer Header File.
This file contains all the functions prototypes for the HAL module driver.
HAL_StatusTypeDef
HAL Status structures definition.
@ HAL_TIMEOUT
@ HAL_ERROR
@ HAL_OK
@ HAL_BUSY
#define UNUSED(x)
PCD_HandleTypeDef hpcd_USB_OTG_HS
Definition usbd_conf.c:41
RCC extended clocks structure definition.
uint64_t PeriphClockSelection
The Extended Clock to be configured.
uint32_t UsbClockSelection
Specifies USB clock source This parameter can be a value of RCCEx USB Clock Source.
header file for the usbd_cdc.c file.
void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd)
Resume callback.
Definition usbd_conf.c:247
void HAL_PCD_MspDeInit(PCD_HandleTypeDef *pcdHandle)
Definition usbd_conf.c:102
void HAL_PCD_ConnectCallback(PCD_HandleTypeDef *hpcd)
Connect callback.
Definition usbd_conf.c:294
void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd)
Suspend callback.
Definition usbd_conf.c:222
void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
Data In stage callback.
Definition usbd_conf.c:161
void Error_Handler(void)
This function is executed in case of error occurrence.
Definition main.c:1145
void HAL_PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd)
Disconnect callback.
Definition usbd_conf.c:308
void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
Data Out stage callback.
Definition usbd_conf.c:146
void HAL_PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
ISOOUTIncomplete callback.
Definition usbd_conf.c:265
USBD_StatusTypeDef USBD_Get_USB_Status(HAL_StatusTypeDef hal_status)
Returns the USB status depending on the HAL status:
Definition usbd_conf.c:655
void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd)
SOF callback.
Definition usbd_conf.c:175
void HAL_PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
ISOINIncomplete callback.
Definition usbd_conf.c:280
void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd)
Setup stage callback.
Definition usbd_conf.c:131
void HAL_PCD_MspInit(PCD_HandleTypeDef *pcdHandle)
Definition usbd_conf.c:66
void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd)
Reset callback.
Definition usbd_conf.c:189
Header file for usbd_core.c file.
General defines for the usb device library.