1

我有一个关于带有回调的 USB 读取的非常简单的问题。

我想设置对缓冲区的读取,然后等到传输完成后再使用缓冲区中的数据。设置了芯片的框架,以便您通过调用 USBD_Read 启动 USB 传输,如果传输正确启动,它将返回成功。然后在传输完成时调用回调。这就是我目前的做法:

volatile unsigned char readArrayLock = 0;

//USB读取回调

void readNextDataArrayCallback(void *pArg, unsigned char status, unsigned int transfered, unsigned int remaining){
 readArrayLock = 0;
}

//读取usb数据

readArrayLock = ! USBD_Read(0x2, g_pucDataArray, g_iDataPacketSize, (TransferCallback)readNextDataArrayCallback, 0);

// 等待

while (readArrayLocked);

//然后使用数据

我遇到的问题是在 while 循环中似乎从未调用过中断。如果我注释掉 while 循环,则调用中断。基本上我的问题是如何使用回调中断 while 循环?

我怎样才能解决这个问题?还是有更好的方法来实现相同的目标?

谢谢

4

0 回答 0