Top.Mail.Ru
Уведомления
Очистить все

[Решено] Пересылка данных по UART-у. Некорректный прием данных!

(@mihayk)
Level 3
Здравствуйте!
Использую передачу данных по UART-у. Приход данных ловлю по прерыванию, используя функцию обработки прерывания:
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
  if (huart->Instance == USART1)
  {
        prRecv = true;
       // ==========================================================
       // на самом деле этот код лежит в основном цикле программы
       // Я показал просто как и что выводится в LCD
        NumR++; if (NumR>255) NumR = 0;
        sprintf(data1, "To TM4C: %d#", NumR);
        sprintf(data2, "%s", (char *)receiveBuffer);
        HD44780_Clear(LCD_ADDR);
        HD44780_SetCursor(0,0, LCD_ADDR);
        HD44780_PrintStr(data1, LCD_ADDR);
        HD44780_SetCursor(0,1, LCD_ADDR);
        HD44780_PrintStr(data2, LCD_ADDR);
      // =========================================================
        HAL_UART_Receive_IT(&huart1, receiveBuffer, BUFFER_SIZE);
  }
}
 
receiveBuffer почему то получается бегущей строкой. Видео предлагаю, кто знает как избавиться от такого эффекта?

 

Цитата
Создатель темы Размещено : 14.07.2023 15:07
(@eduard)
Level 5 Moderator

Я HAL не знаю, но мне кажется, что в прерывании вызывается функция приёма через прерывание.

ОтветитьЦитата
Размещено : 14.07.2023 19:23
Aveal
(@aveal)
Top level Admin

Надо посмотреть под отладчиком, в receiveBuffer уже данные смещены, тогда проблема в этой части, либо в revceiveBuffer все нормально, тогда дело в выводе на дисплей.

ОтветитьЦитата
Размещено : 15.07.2023 10:56
(@mihayk)
Level 3

@aveal 

Я нашел причину.  Отсылка данных к STM32 идет с контроллера TM4C1294. Там нет HAL-функций и отправку сообщений надо писать самому используя функции более низкого уровня.  Подправил и все стало работать, как надо! Спасибо за советы, они помогли мне подумать!

ОтветитьЦитата
Создатель темы Размещено : 17.07.2023 11:22
Aveal
(@aveal)
Top level Admin

@mihayk Отлично 👍 

ОтветитьЦитата
Размещено : 17.07.2023 15:01
Поделиться: