реклама на сайте
подробности

 
 
> STM32 HAL: не отправляются данные через UART
ArchiDevil
сообщение Jul 18 2016, 11:48
Сообщение #1





Группа: Участник
Сообщений: 6
Регистрация: 6-12-15
Пользователь №: 89 588



Здравия всем.

Проблема в следующем: не отправляются данные через USART1 или USART2 (другие не пробовал). Прием с ПК работает нормально.
Работаю с платой через STMCube, соответственно HAL. Упростил уже всё до предела, не понимаю в чем проблема.
Отправлял данные с USART1 на USART2 (не приходит вообще ничего), отправлял данные на ПК (смотрел четырьмя терминалами: везде приходит разный мусор).
Настройки самые обычные: 9600 бод, 8 бит данные, 1 стоп-бит. Контроль четности выключен. Приемник и передатчик (в случае USART1 -> USART2) настроены одинаково.
Смотрел двумя дебаггерами, при USART1 -> USART2 случае SR->RXNE не взводится, DR пустой (иногда содержит мусор). Изредка RXNE поднимается перед HAL_Delay, но после задержки снова становится нулем.

Что забавно, код на SPL работает.

Код
while (1)
{
    HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12, GPIO_PIN_SET);

    uint8_t send_data[] = {'A'};
    if(HAL_UART_Transmit(&huart1, send_data, 1, HAL_MAX_DELAY) != HAL_OK)
        Error_Handler();

    HAL_Delay(1000);
    uint8_t receive_data[] = {0};
    if(HAL_UART_Receive(&huart2, receive_data, 1, HAL_MAX_DELAY) != HAL_OK)
        Error_Handler();

    HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12, GPIO_PIN_RESET);
}


Если делать отправку просто через регистры, типа такого:
Код
void send_to_uart(uint8_t data)
{
while(!(USART1->SR & USART_SR_TC));
USART1->DR = data;
}
uint8_t receive_from_uart()
{
  while(!(USART2->SR & USART_SR_RXNE));
  return USART2->DR & 0xFF;
}

То аналогично вешаемся на while в приеме не дожидаясь RXNE. Причина в конфигурации?

Уже и не знаю куда копать. Кто-нибудь может помочь?

Сообщение отредактировал ArchiDevil - Jul 18 2016, 12:03
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 21:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.03909 секунд с 7
ELECTRONIX ©2004-2016