Искал - пусто.
Сергей Борщ, хотите прикол?
Было (это единственное объявление данной переменной на весь проект, сидит в том же файле что и код ниже):
Код
__ALIGN_BEGIN uint8_t USB_Rx_Buffer [MAX_DATA_LENGTH] __ALIGN_END;
Меняю на:
Код
__ALIGN_BEGIN uint8_t SuperMegaBuffer [MAX_DATA_LENGTH] __ALIGN_END;
, соответственно, в коллбеке приема:
Код
static uint8_t USBD_HID_DataOut (void *pdev, uint8_t epnum) {
uint16_t USB_Rx_Cnt;
uint8_t i = 0;
USB_Rx_Cnt = ((USB_OTG_CORE_HANDLE*)pdev)->dev.out_ep[epnum].xfer_count; // pointer to usb packet
USB_Rx_Buffer[0] = 0x01;
TM_USB_HIDDEVICE_SendCustom(USB_Rx_Buffer, 65);
DCD_EP_PrepareRx(pdev, HID_OUT_EP, USB_Rx_Buffer, MAX_DATA_LENGTH);
return USBD_OK;
}
меняю на:
Код
static uint8_t USBD_HID_DataOut (void *pdev, uint8_t epnum) {
uint16_t USB_Rx_Cnt;
uint8_t i = 0;
USB_Rx_Cnt = ((USB_OTG_CORE_HANDLE*)pdev)->dev.out_ep[epnum].xfer_count; // pointer to usb packet
SuperMegaBuffer[0] = 0x01;
TM_USB_HIDDEVICE_SendCustom(SuperMegaBuffer, 65);
DCD_EP_PrepareRx(pdev, HID_OUT_EP, SuperMegaBuffer, MAX_DATA_LENGTH);
return USBD_OK;
}
и все, больше ничего и нигде не трогаю. И что же я вижу? А то, что чудесным, мать его, образом - в SuperMegaBuffer оказываются принятые данные. КАААК?