Все разобрался,
es131245 все таки чутье программиста у тебя, спасибо за наводку. Проблема была в размере отсылаемой информации.
в USB HID есть дескриптор протокола он описывает какую информацию мы передаем и получаем.
в файле
usbd_custom_hid_if.c указать
Код: Выделить всё
__ALIGN_BEGIN static uint8_t CUSTOM_HID_ReportDesc_FS[USBD_CUSTOM_HID_REPORT_DESC_SIZE] __ALIGN_END =
{
0x06, 0x00, 0xff, // USAGE_PAGE (Generic Desktop)
0x09, 0x01, // USAGE (Vendor Usage 1)
0xa1, 0x01, // COLLECTION (Application)
0x85, 0x01, // REPORT_ID (1)
0x09, 0x01, // USAGE (Vendor Usage 1)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x01, // REPORT_COUNT (1)
0xb1, 0x82, // FEATURE (Data,Var,Abs,Vol)
0x85, 0x01, // REPORT_ID (1)
0x09, 0x01, // USAGE (Vendor Usage 1)
0x91, 0x82, // OUTPUT (Data,Var,Abs,Vol)
0x85, 0x02, // REPORT_ID (2)
0x09, 0x02, // USAGE (Vendor Usage 2)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x01, // REPORT_COUNT (1)
0xb1, 0x82, // FEATURE (Data,Var,Abs,Vol)
0x85, 0x02, // REPORT_ID (2)
0x09, 0x02, // USAGE (Vendor Usage 2)
0x91, 0x82, // OUTPUT (Data,Var,Abs,Vol)
0x85, 0x03, // REPORT_ID (3)
0x09, 0x03, // USAGE (Vendor Usage 3)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (255)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x01, // REPORT_COUNT (1)
0xb1, 0x82, // FEATURE (Data,Var,Abs,Vol)
0x85, 0x03, // REPORT_ID (3)
0x09, 0x03, // USAGE (Vendor Usage 3)
0x91, 0x82, // OUTPUT (Data,Var,Abs,Vol)
0x85, 0x04, // REPORT_ID (4)
0x09, 0x04, // USAGE (Vendor Usage 4)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x04, // REPORT_COUNT (4)
0x81, 0x82, // INPUT (Data,Var,Abs,Vol)
0xc0 // END_COLLECTION
};
Далее нужно указать его длину
в файле
usbd_conf.h
Код: Выделить всё
#define USBD_CUSTOM_HID_REPORT_DESC_SIZE 79
дескриптор сконфигурирован под демо программу
USB HID Demonstrator от
ST
----------------------С ЭТОГО МОМЕНТА НЕ ПРОВЕРЯЛ --------------------------------
Далее нужно реагировать на эти события, в том же файле
usbd_custom_hid_if.c
Код: Выделить всё
static int8_t CUSTOM_HID_OutEvent_FS (uint8_t event_idx, uint8_t state)
{
/* USER CODE BEGIN 6 */
return (0);
/* USER CODE END 6 */
}
гдето так
Код: Выделить всё
switch(event_idx)
{
case 1: /* LED1 */
(state == 1) ? HAL_GPIO_WritePin (GPIOD,GPIO_PIN_12 ,GPIO_PIN_SET ) : HAL_GPIO_WritePin (GPIOD,GPIO_PIN_12 ,GPIO_PIN_RESET );
break;
case 2: /* LED2 */
(state == 1) ? HAL_GPIO_WritePin (GPIOD,GPIO_PIN_13 ,GPIO_PIN_SET ) : HAL_GPIO_WritePin (GPIOD,GPIO_PIN_13 ,GPIO_PIN_RESET );
break;
case 3: /* LED3 */
(state == 1) ? HAL_GPIO_WritePin (GPIOD,GPIO_PIN_14 ,GPIO_PIN_SET ) : HAL_GPIO_WritePin (GPIOD,GPIO_PIN_14 ,GPIO_PIN_RESET );
break;
default:
HAL_GPIO_WritePin (GPIOD,GPIO_PIN_12 ,GPIO_PIN_RESET );
HAL_GPIO_WritePin (GPIOD,GPIO_PIN_13 ,GPIO_PIN_RESET );
HAL_GPIO_WritePin (GPIOD,GPIO_PIN_14 ,GPIO_PIN_RESET );
break;
}
return (0);
Еше раз спасибо за поддержку
es131245 и
Pavel_1978, и всем котам много валерьянки
