danielll Napisano Luty 7, 2021 Udostępnij Napisano Luty 7, 2021 Cześć. Wydaje mi się, że jest to dość nietypowa sytuacja. Pracując nad wyświetlaczem w pewnym momencie zauważyłem, że UART zamiast małych liter wyświetla tylko jakieś dziwne znaki. Początkowo to zignorowałem bo i tak docelowo UARTa niepotrzebuję, ale później okazało się ze wyświetlacz, który czyta czcionki z karty SD również nie wyświetla poprawnie malych liter. Precyzując zauważyłem, że w obu przypadkach znaki są wyświetlane do 92 numery w kodzie ASCII. Sterowanie wyświetlaczem w żaden sposób nie jest powiązane z UARTem a problem, który tam występuje, domyślam się że pochodzi z niewłaściwego odczytywania znaków przed graficzną reprezentacją znaku na karcie SD w stylu: ! --#-- --#-- --#-- ----- --#-- Przez to pewnie pojawia się jakieś przesunięcie w odczycie czcionki. Próbowałem też wygenerować nowy, pusty projekt gdzie w mainie umieściłem: HAL_UART_Transmit(&huart3, (uint8_t*)"ABCDabcd", 10, 100); Oczywiście tylko cztery pierwsze znaki zostały poprawnie wysłane. Probowałem też wyczyścic pamięć przez ST-Linka, również bez pozytywnego efektu. Domyślam się, że obie sytuacje są w jakiś sposób powiązane lecz nie mam pojęcia jak. Sprawdzałem czy nie uwalil się proc i jakiś zapis do pamięci przez co ucina wartości ale w debugerze nic podejrzanego nie zauważyłem. Sprawdzając przez STM Studio np. wartość 'a' widzę ją poprawnie. Czy ktoś ma jakikolwiek pomysł co mogło się wydarzyć? Układ F429ZI Nucleo. Cytuj Link do komentarza Share on other sites More sharing options...
Anonim Luty 9, 2021 Udostępnij Luty 9, 2021 (edytowany) HAL_StatusTypeDef HAL_UART_Transmit (UART_HandleTypeDef * huart , uint8_t * pData , uint16_t Size , uint32_t Timeout) Spróbuj czegoś takiego.To zajmie Ci 5minut. Oczywiście w Twoim rozwiązaniu będzie HAL_UART_Transmit (& huart13, buff, strlen (buff), 1000); Oczywiście linia MX_USART1_UART_Init(); będzie wyglądać odpowiednio. --------------------------------------------------- MX_GPIO_Init(); MX_USART1_UART_Init(); /* USER CODE BEGIN 2 */ /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ char buff [50] = "dzisiaj jest zimno\r\n"; while (1) { HAL_UART_Transmit (& huart1, buff, strlen (buff), 1000); //huart: wskaźnik do struktury UART_HandleTypeDef, która zawiera informacje o konfiguracji dla określonego modułu UART. //• pData: wskaźnik do bufora danych (elementy danych u8 lub u16). // • Rozmiar: Ilość elementów danych (u8 lub u16) do przesłania // • Limit czasu: czas trwania limitu czasu //HAL_StatusTypeDef HAL_UART_Transmit (UART_HandleTypeDef * huart, uint8_t * pData, uint16_t Size, uint32_t Timeout) //huart: Pointer to a UART_HandleTypeDef structure that contains the configuration information for the // specified UART module. // • pData: Pointer to data buffer (u8 or u16 data elements). // • Size: Amount of data elements (u8 or u16) to be sent // • Timeout: Timeout duration HAL_Delay(2000); /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } Edytowano Luty 10, 2021 przez Gieneq Zachęcam do korzystania z bloku kodu programu Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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!