lpcexpresso55s28 dev hid generic freertos example

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

lpcexpresso55s28 dev hid generic freertos example

1,161件の閲覧回数
AlonaB
Contributor I

Hello,

I am using the LPC55S28 microcontroller and adapting code from the hid generic example into my project. I implemented a type of flow control by returning kStatus_USB_Busy in kUSB_DeviceHidEventSetReport when I want the host to wait and not send more messages.

for (; devState < ((uint32_t)USB_DEVICE_IP3511_ENDPOINTS_NUM * 2U); ++devState) {
/* Check the endpoint interrupt */
if (0U != (interruptStatus & (0x01UL << devState))) { USB_DeviceLpc3511IpInterruptToken(lpc3511IpState, (uint8_t)devState, 0U, usbErrorCode);
} }
 

This behavior is triggered immediately because interruptStatus and devState are updated to 2 and 1, respectively.

How can I prevent this event from being re-triggered, given that the buffer does not contain any new data? Currently, this results in duplicate messages being processed every time I return the kStatus_USB_Busy status.

I would appreciate your help!

0 件の賞賛
返信
1 返信

393件の閲覧回数
yisey
Contributor I

Use a software flag to track the busy state. Before processing kUSB_DeviceHidEventSetReport, check if a flag like isHidBusy is set. If it is, skip processing to prevent duplicate handling. Similar to how Turf Protection window film prevents repeated damage, this flag ensures the same event isn’t retriggered while the buffer hasn’t changed. Only clear the flag when the previous data has been fully handled. Additionally, ensure the endpoint interrupt flag is cleared or skipped in the ISR if no new data is available.

0 件の賞賛
返信