Forum: Mikrocontroller und Digitale Elektronik STM32 Problem mit UART Receive


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Simon (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

derzeit hänge ich bei der Implementation meiner UART Receive Funktion 
auf meinem STM32F407. Eigentlich sollte es keine große Sache sein, nur 
irgendwie kann ich nur das erste übertragene Zeichen empfangen. Sprich 
es wid nur das erste übertragene Zeichen in den Speicher übertragen. Zu 
meinem Code:
Die Hardware Config ist mit CubeMX erstellt. Alles passt auch soweit. 
Als IDE nutze ich Eclipse.
Die Übertragung soll mittels Interrupt geschehen 
(HAL_UART_Receive_IT(...)).
Ich habe sowohl eigenen Code als auch externen versucht, welcher auf dem 
Chip laufen sollte. In beiden Fällen wird immer nur der erste char den 
ich per hterm schicke empfangen. Auch verschiedene Baudraten hab ich 
versucht.
Zu meinem Code: Er basiert auf den HAL Treibern. Builden und Flashen 
funktioniert auch problemlos. Der Code sieht wie folgt aus:

/* Private variables 
---------------------------------------------------------*/
char UART3_Data;
char UART_Buffer[32];
char i = 0;

....

  HAL_UART_Receive_IT(&huart3, (uint8_t*) &UART3_Data, 1);
  while (1){
}

....

/* USER CODE BEGIN 4 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){

 char n = 0;
 char UART_Aux[32];

 if(huart->Instance == USART3){
  if(UART3_Data != '\n'){
   UART_Buffer[i] = UART3_Data;
   i++;
  }
  else{
   n = sprintf(UART_Aux, "%s", UART_Buffer);
   HAL_UART_Transmit(&huart3, (uint8_t*) &UART_Aux, n, 1000);
   i = 0;
  }
  HAL_UART_Receive_IT(&huart3, (uint8_t*) &UART3_Data, 1);
 }
}
}

Es wäre super, wenn ihr mir eine Ratschlag geben könntet. Weil ich stehe 
dertzeit vollkommen auf dem Schlauch.

Viele Grüße,
Simon

von hp-freund (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Moin,
ich gehe davon aus das Du von PC nicht jedes mal das Zeilenende 
mitsendest.
So habe ich das gemacht:

Beitrag "Re: STM32 Uart implementierung findet die defines nicht?!"

Bitte diesen und den nächsten Beitrag lesen.

von Simon (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Super! Vielen Dank, genau das war das Problem. Ich ging dummerweise 
davon aus, dass hterm das Zeilenende automatisch mitsendet. Jedenfalls 
läufts jetzt!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.