Я настроил некоторые свои UART на STM с DMA, и иногда я траншировал данные UART с помощью функций DMA HALs (HAL_UART_Transmit_DMA
und HAL_UART_Receive_DMA
), а иногда с помощью функций с таймером HALs (HAL_UART_Transmit
und HAL_UART_Receive
)).
Пока все хорошо, теперь я спросил себя, могу ли я передать данные с отложенными функциями и получить ответ с помощью функций DMA (поскольку мои передаваемые данные очень короткие, но ответ довольнобольшой, и я мог бы сделать некоторые другие вычисления, пока у меня, вероятно, не будет ответа.Или это просто стилистически плохо, или, может быть, просто отлично?
HAL_UART_Transmit(&huart5, com->cmd, com->cmdSize, timeout);
HAL_UART_Receive_DMA(&huart5, rfidBuffer, com->responseSize);
//some other stuff
while(!/*check if flag in HAL_UART_RxCpltCallback was set*/);
//process received data