ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
13 октября
1546047 Топик полностью
IBAH (05.10.2025 20:16, просмотров: 57) ответил IBAH на Разбираюсь с USB HID от STM. Пытаюсь сделать клавиатуру. Не могу найти как проверить занятость USB перед вызовом USBD_HID_SendReport(). Или ее вообще не надо проверять?
Разбирая код нашел , если перед вызовом проверю hhid->state != USBD_HID_BUSY это оно? 
//
uint8_t USBD_HID_SendReport(USBD_HandleTypeDef *pdev, uint8_t *report, uint16_t len, uint8_t ClassId)
{
USBD_HID_HandleTypeDef *hhid = (USBD_HID_HandleTypeDef *)pdev->pClassDataCmsit[pdev->classId];

  if (hhid == NULL)
  {
    return (uint8_t)USBD_FAIL;
  }

  if (pdev->dev_state == USBD_STATE_CONFIGURED)
  {
    if (hhid->state == USBD_HID_IDLE)
    {
      hhid->state = USBD_HID_BUSY;
      (void)USBD_LL_Transmit(pdev, HIDInEpAdd, report, len);
    }
  }

  return (uint8_t)USBD_OK;
}


//





typedef enum

{

USBD_HID_IDLE = 0,

USBD_HID_BUSY,

} USBD_HID_StateTypeDef;



typedef struct

{

uint32_t Protocol;

uint32_t IdleState;

uint32_t AltSetting;

USBD_HID_StateTypeDef state;

} USBD_HID_HandleTypeDef;