Hallo zusammen, ich bin gerade dabei, die letzten Stunden vor der Bescherung dafür zu nutzen, an einem STM32F446RE einen UART auf andere Pins zu wechseln (von USART2 auf USART3). Auf USART2 kann ich sowohl direkt (usart_putc()) Daten ausgeben, als auch per DMA (usart_put()). Letzteres funktioniert auf USART3 nicht. Ich gehe gerade davon aus, daß ich einfach einen Flüchtigkeitsfehler gemacht habe. Der Fehler äußert sich darin, daß per DMA kein einziges Zeichen ausgegeben wird. Der DMA Transfer Complete Interrupt wird aufgerufen, das Register DMA1_Stream3->NDTR zeigt aber nicht Null an. Wer hat auch Langeweile und einen scharfen Blick? Nachtrag: Ich habe es gefunden. Das Flag DMA_IT_TCIF6 bezieht sich auf den Stream 6 (wer hätte es ahnen können?). Jetzt funktioniert alles und ich kann das Zeug in den nächsten Tagen in Ruhe aufräumen. Schöne Weihnachten allen Rätselfreunden!
:
Bearbeitet durch User
Das liegt eben daran, dass der STM32 HAL kein wirklicher HAL ist. Die DMA Streams sind ja garnicht wegabstrahiert und du darfst dir raussuchen was der neue USART nutzt. Da kommts dann eben leider zu sowas.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.