Estoy trabajando en un firmware para un STM32F103 que se comunica por RS232 a 115200 baudios con un controlador de motor. El controlador del motor (un Copley Xenus XTL ) funciona con un protocolo de "hablar cuando se le habla". Estoy usando la interfaz de programación ASCII en los documentos enlazados. El STM32 siempre envía el mismo comando ("g r0x18") para sondear un registro, y el controlador del motor responde con un número variable (~4-10 bytes) de caracteres terminados por un retorno de carro ("v 12345", donde el número de dígitos es variable). Tengo un código para analizar la respuesta y sacar un valor numérico de ella. Una vez que la respuesta es analizada, el comando de sondeo de registro debe ser transmitido al controlador del motor de nuevo. El STM32 también está leyendo un canal ADC sobre DMA en modo circular en el fondo.
Me gustaría implementar esto usando el controlador DMA para que todo sea lo menos bloqueante posible, pero estoy un poco confundido en cuanto a qué interrupciones debería usar y cuándo se disparan. Sin usar el controlador DMA, el código de análisis reside actualmente en la interrupción USART RXNE. Supongamos que transmito un comando y el controlador del motor comienza a responder. Creo que la interrupción RXNE se dispara por cada byte recibido, pero ¿qué pasa con la interrupción de transferencia DMA completa? ¿Hay alguna diferencia funcional en este caso entre usar la interrupción DMA TC y la interrupción USART RXNE?