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