Skocz do zawartości
Komentator

Kurs STM32 F4 - #7 - Komunikacja przez UART

Pomocna odpowiedź

(edytowany)

Z moich uwag, poza tym, co wcześniej opisał Elvis odnośnie końca linii i buforowania, to dorzuciłbym problematyczne działanie przykładu z 10 znakami w buforze. Na moim kompie RealTerm wyrzucał krzaczki na końcu stringa (w sensie 10 znaków normalnie i potem jakieś randomy). Wydaje mi się, że wynikało to z faktu braku zamknięcia tablicy znakiem '\0' (10-znakowy bufor i 10 znaków zapisanych). Jak uzupełniłem ten znak na dodanym przeze mnie 11. miejscu problem zniknął i wypisywanie odbywało się normalnie.

Edytowano przez PrimeSoul
  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

@PrimeSoul dzięki za sygnał. Na pewno będziemy za jakiś czas aktualizować ten kurs, aby wstawić zrzuty z aktualnych wersji Cube i poprawić część tematów merytorycznie. Będę dawał znać na forum, gdy kurs będzie już zaktualizowany 🙂

Udostępnij ten post


Link to post
Share on other sites

Mam, pytanie jak stworzyć program który będzie przesyłał dowolną, różną ilość znaków, czyli żeby w terminalu pokazywały się słowa o różnej długości a nie np o stałej wartości 10 znaków?

Udostępnij ten post


Link to post
Share on other sites

@rizone1234 a na czym dokładnie utknąłeś? Jaki program udało Ci się napisać i co dokładnie w nim nie działa?

Udostępnij ten post


Link to post
Share on other sites
/* USER CODE BEGIN PV */
/* Private variables ---------------------------------------------------------*/
uint8_t Received[10];
/* USER CODE END PV */

/* USER CODE BEGIN PFP */
/* Private function prototypes -----------------------------------------------*/
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {

	uint8_t Data[40]; // Tablica przechowujaca wysylana wiadomosc.
	uint16_t size = 0; // Rozmiar wysylanej wiadomosci

	size = sprintf(Data, "Odebrana wiadomosc: %s\n\r",Received);

	HAL_UART_Transmit_IT(&huart1, Data, size); // Rozpoczecie nadawania danych z wykorzystaniem przerwan
	HAL_UART_Receive_IT(&huart1, Received, 10); // Ponowne włączenie nasłuchiwania
	HAL_GPIO_TogglePin(LED_BLUE_GPIO_Port, LED_BLUE_Pin);
}
/* USER CODE END PFP */

/* USER CODE BEGIN 2 */
HAL_UART_Receive_IT(&huart1, Received, 10);
/* USER CODE END 2 */

Kod jest taki jak w kursie o stm32 f4. Ja chciałbym, żeby mi każde słowo się wyświetlało w Real Term, nie tylko o długości 10 znaków, ale także po 8 znaków czy 6 znaków. Reasumując, chciałbym o dowolnej ilości znaków słowo wysłane przez UART, zobaczyć w terminalu. Piszę słowo "pies" chciałbym zobaczyć to słowo, później napisze np. "dzwoneczek" też chciałbym aby to słowo się pojawiło w terminalu.

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...