Hallo,
ich benutze HAL_UART_Transmit_IT und übertrage mehrere Blöcke
nacheinander.
Das Ganze habe ich in einer Statemachine realisiert. Bisher mache ich
die Weiterschaltung mit einer festen Zeit. Wenn der erste Block gesendet
wird, wird in den nächsten State geschaltet. In dem wird dann erst
weiter geschaltet, wenn die Zeit erreicht ist.
Mit dem "Transmit Ende"-Signal wäre es aber sicherlich schneller und vor
allem sicherer anstelle einer Zeit. Ich habe wie folgt programmiert und
es gibt ein Problem bei der Übertragung. Ich vermute die Umschaltung
geht schon weiter, obwohl die Übertragung nicht fertig ist:
1 | if(HAL_UART_GetState(&huart2) != HAL_UART_STATE_BUSY_TX) // Übertragung fertig?
|
2 | ucSM_status++; // nächster State
|
Ist die Abfrage nicht korrekt? Oder habe ich einen Denkfehler?