USART receive interrupt stm32
Entwickle ich an einer map arbeite ich auf STM32 und USART-interrupts. Nach der Konfiguration der USART1 und machen Sie Aktivieren erhalten unterbrechen. Das problem, dass die Unterbrechung der Rezeption haben nicht erkannt????
erste Sachen zuerst: ist der USART richtig funktioniert auf seine eigene? Können Sie empfangen von Daten, ohne die interrupts? Also einfach manuell das Lesen der erhalten registrieren?
InformationsquelleAutor rhso | 2012-09-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Solch eine Frage ist schwer zu beantworten, ohne zu wissen, welche speziellen Prozessor, den Sie verwenden, welches board du verwendest, und/oder welchen compiler Sie verwenden. Aber in einem Versuch, hilfreich zu sein, hier mein code.
Hier ist meine GPIO und Initialisierung NVIC-code mit Sourcery CodeBench Lite mit einem STM32F4 Prozessor montiert auf einer eigenen platine.
Natürlich Ihre Einstellungen variieren je nach Prozessor, board und interrupt-Priorität.
Hier meine interrupt-handler-code. In meiner Entwicklungsumgebung dieser handler deklariert ist mein Start-assembly-Datei als einen schwachen Verweis auf
Default_Handler
...... so lange, wie ich eine neue Deklaration und Implementierung dieser interrupt-handler, der schwache Verweis ersetzt werden. Hier ist, was mein code aussieht.
Verwendung von C++ müssen Sie erklären es wie folgt:
Und hier ist der interrupt-handler-Implementierung.
InformationsquelleAutor Verax
Hier ist in kurzen und einfachen code zu konfigurieren STM32 USART (USART3) und Interrupt-Handler.
Konfigurieren und Init
Griff Bekommen Unterbrechen
InformationsquelleAutor Hilogic
Stellen Sie sicher, dass Sie nicht nennen HAL_UART_Transmit() auf dem gleichen usart, die Sie versuchen zu unterbrechen. Es ist, weil diese Funktion ruft UART_WaitOnFlagUntilTimeout (), deaktiviert den interrupt. Die trace-printf (), die user7404301 oben erwähnt, die meisten wahrscheinlich, es nennt.
InformationsquelleAutor Song Toàn
PROBE CODIERUNG BEHANDELN RECEIVE-INTERRUPTS
InformationsquelleAutor Kalman Rotert
Ich hatte die gleiche Frage mit Eclipse(GCC)vor und schließlich fand ich heraus, das problem.Das problem ist nicht der code, sondern die "trace_printf", wenn Sie diese API, um zu drucken Sie alle details, während der Ausführung, die "trace_printf" brechen die uart und die Ihr empfangen interrupt wird nie ocurrs.Also, haben Sie einen Versuch, es nicht benutzen und setzen Sie Haltepunkte, um zu sehen, was Sie haben recveived.
InformationsquelleAutor Gorgeous