Forum: Mikrocontroller und Digitale Elektronik STM32 Problem mit UART Receive


von Simon (Gast)


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)


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)


Lesenswert?

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

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
Noch kein Account? Hier anmelden.