У меня очень простой вопрос о считывании USB с обратными вызовами.
Я хочу настроить чтение в буфер, а затем дождаться завершения передачи, прежде чем использовать данные в буфере. Каркас для чипа настроен так, что вы начинаете передачу через USB, вызывая USBD_Read, который вернет успех, если передача началась правильно. Затем обратный вызов будет вызван, когда передача будет завершена. Вот как я сейчас это делаю:
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, вызывается interupt. В основном мой вопрос: как я могу прервать цикл while с помощью обратного вызова?
Как я могу это исправить? Или есть лучший метод для достижения того же самого?
Спасибо