Estoy trabajando en el firmware para un STM32F103 que se está comunicando a través de RS232 a 115200 baudios con un controlador de motor. El controlador del motor (un Copley Xenus XTL ) funciona en un "habla cuando hablado a "protocolo. Estoy usando la interfaz de programación ASCII en los documentos vinculados. 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 número de dígitos es variable). Tengo un código para analizar la respuesta y extraer un valor numérico de ella. Una vez analizada la respuesta, el comando de sondeo de registro debe transmitirse nuevamente al controlador del motor. El STM32 también está leyendo un canal ADC sobre DMA en modo circular en segundo plano.
Me gustaría implementar esto usando el controlador DMA para hacer que todo sea lo más no bloqueable posible, pero estoy un poco confundido en cuanto a qué interrupciones debería usar y cuándo se activan. Sin utilizar 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 activa para cada byte recibido, pero ¿qué pasa con la interrupción completa de la transferencia DMA? ¿Hay alguna diferencia funcional en este caso entre usar la interrupción DMA TC y la interrupción USART RXNE?