Hallo zusammen, ich nutze einen Black Pill (STM32F411) mit einem 3,5" Nextion Display. Das senden funktioniert einwandfrei. Nun tue ich mich schwer, Daten vom Nextion zu empfangen. Bis jetzt habe ich das empfangen von Zeichen im Interrupt mit HTerm getestet. Nur habe ich gerade ein Brett vorm Kopf, wie ich relativ effizient auf auf die drei 0xFF abfragen kann, die das Nextion am Ende des Strings sendet. Und ich nutze kein Arduino, sondern STM32CubeIDE mit HAL. Gruß Achim
Due empfängst die Zeichen und prüfst im IT auf 0xFF. Dann zählst du einen Zähler hoch und wenn der 3 hintereinander hat bist du fertig?
Hallo, ich hab es jetzt so gemacht:
1 | void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) |
2 | {
|
3 | HAL_UART_Receive_IT(&huart1, &Rxbuf, 1); |
4 | if(!String_Complete) // 1= String noch in Bearbeitung |
5 | {
|
6 | if(Rxbuf!=0xFF) // Ende-Kennung? |
7 | {
|
8 | RXBuffer[RXBuffer_Count]=Rxbuf; // Zeichen in Buffer schieben |
9 | RXBuffer_Count++; // Zähler erhöhen |
10 | }
|
11 | else
|
12 | {
|
13 | if(FF_Count==1) // 1= schon zwei End-Kennungen erkannt |
14 | {
|
15 | String_Complete=1; // String fertig |
16 | RXBuffer_Count=0; // Index auf Null |
17 | }
|
18 | else
|
19 | {
|
20 | FF_Count++; // End-Kennungszähler erhöhen |
21 | }
|
22 | }
|
23 | }
|
24 | |
25 | }
|
Im Debugger habe ich es mit HTerm getestet. Sieht erstmal gut aus. Hab ich da grobe Schnitzer drin? Gruß Achim
Einen kleinen Nachtrag habe ich aber dennoch. Wenn ich alles ausschalte und dann wieder einschalte, regiert der STM32 nicht auf die Daten vom Nextion. Erst wenn ich noch eine Reset am STM32 ausführe, geht es wieder normal?! Gruß Achim
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.