Hallo,
ich habe hier einen kleinen UART Treiber zum Senden von Daten für STM32
CubeMX HAL der nicht richtig funktioniert.
Das Ganze sieht etwa so aus:
1 | void uart_transmit(...)
|
2 | {
|
3 | while (HAL_DMA_STATE_READY != HAL_DMA_GetState(gp_usart->hdmatx)) ;
|
4 | while (HAL_UART_STATE_READY != HAL_UART_GetState(gp_usart)) ;
|
5 |
|
6 | while (HAL_UART_Transmit_DMA(gp_usart, gp_buffer, max_length) != HAL_OK) ;
|
7 |
|
8 | //Delay(10000);
|
9 | }
|
Mit der Delay() Funktion kommen die Daten so am PC an wie sie sollen.
Ohne Delay() werden sie zum Teil überschrieben und es kommt nur Mist an.
Da ich ja alle (wirklich alle?) notwendigen Flags zuvor mit while()
abfrage, frage ich mich, wie sowas überhaupt passieren kann?
Danke und Gruß Peter