Guten Abend zusammen,
ich komm einfach nicht mehr weiter.
Die Situation: Ein PC Programm (C++) sendet seriell Daten raus.
Empfangsseite ist ein Nucleo Board mit STM32F103.
Er empfängt die Bytes alle korrekt bis auf das Erste. Das wird immer als
Null empfangen.
Ausschnitt des PC-Code:
1 | while (sendBuffer[i] != 0)
|
2 | {
|
3 | printf("%d\n", sendBuffer[i]); // hiermit prüfe ich dass
|
4 | i++; // sendBuffer richtig belegt ist
|
5 | }
|
6 |
|
7 |
|
8 |
|
9 | object.connect("COM4");
|
10 | object.sendArray(sendBuffer, sizeof(sendBuffer));
|
11 | object.disconnect();
|
Empfangsseite Mikrocontroller, im UART-receive-Interrupthandler:
1 | if(USART_GetITStatus(USART2, USART_IT_RXNE))
|
2 | {
|
3 | USART_ClearITPendingBit(USART2, USART_IT_RXNE);
|
4 |
|
5 |
|
6 | uint8_t data = (uint8_t) USART_ReceiveData(USART2);
|
7 |
|
8 | receivedString[counter] = data;
|
9 | counter++;
|
10 | }
|
Jetzt lese ich im Debug Modus (CooCox CoIDE) receivedString aus. Und
siehe: receivedString[0] ist immer Null, alle anderen Positionen ab
receivedString[1] sind völlig korrekt empfangen.
Und ganz seltsam: Wenn ich statt aus dem PC Programm heraus über ein
Terminalprogramm (HTerm) von Hand das Array byteweise an den
Mikrocontroller sende, dann funktioniert alles, auch das erste Element
hat dann seinen richtigen Wert. Also zumindest auf µC Seite dürfte das
einen fehler im Code ausschliessen, oder?
Irgendjemand auch nur den kleinsten Anhaltspunkt?