コールバックを使用した 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 ループを中断するにはどうすればよいですか?
どうすればこれを修正できますか? または、同じことを達成するためのより良い方法はありますか?
ありがとう