Gast
#4872351
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