Например TDA7294

Форум РадиоКот • Просмотр темы - HAL_UARTEx_RxEventCallback не вызывается
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пт янв 02, 2026 12:05:26

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: HAL_UARTEx_RxEventCallback не вызывается
СообщениеДобавлено: Пн апр 11, 2022 00:30:24 
Открыл глаза

Зарегистрирован: Вт июн 05, 2012 23:32:13
Сообщений: 46
Рейтинг сообщения: 0
Всем привет! Подскажите пожалуйста, не срабатывает Callback
Спойлер
Код:
char str[1024] = { 0 };
int main(void) {
   MX_USART1_UART_Init();
   MX_USART2_UART_Init();
   HAL_UARTEx_ReceiveToIdle_IT(&huart1, str, 1024);
   while (1) {
   }
}
static void MX_USART1_UART_Init(void) {

   /* USER CODE BEGIN USART1_Init 0 */

   /* USER CODE END USART1_Init 0 */

   /* USER CODE BEGIN USART1_Init 1 */

   /* USER CODE END USART1_Init 1 */
   huart1.Instance = USART1;
   huart1.Init.BaudRate = 9600;
   huart1.Init.WordLength = UART_WORDLENGTH_8B;
   huart1.Init.StopBits = UART_STOPBITS_1;
   huart1.Init.Parity = UART_PARITY_NONE;
   huart1.Init.Mode = UART_MODE_TX_RX;
   huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
   huart1.Init.OverSampling = UART_OVERSAMPLING_16;
   if (HAL_UART_Init(&huart1) != HAL_OK) {
      Error_Handler();
   }
   /* USER CODE BEGIN USART1_Init 2 */

   /* USER CODE END USART1_Init 2 */

}

/**
 * @brief USART2 Initialization Function
 * @param None
 * @retval None
 */
static void MX_USART2_UART_Init(void) {

   /* USER CODE BEGIN USART2_Init 0 */

   /* USER CODE END USART2_Init 0 */

   /* USER CODE BEGIN USART2_Init 1 */

   /* USER CODE END USART2_Init 1 */
   huart2.Instance = USART2;
   huart2.Init.BaudRate = 115200;
   huart2.Init.WordLength = UART_WORDLENGTH_8B;
   huart2.Init.StopBits = UART_STOPBITS_1;
   huart2.Init.Parity = UART_PARITY_NONE;
   huart2.Init.Mode = UART_MODE_TX_RX;
   huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
   huart2.Init.OverSampling = UART_OVERSAMPLING_16;
   if (HAL_UART_Init(&huart2) != HAL_OK) {
      Error_Handler();
   }
   /* USER CODE BEGIN USART2_Init 2 */

   /* USER CODE END USART2_Init 2 */

}

void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size) {
   if (huart->Instance == USART1) {
      HAL_UART_Transmit_IT(&huart2, str, Size);
      HAL_UARTEx_ReceiveToIdle_IT(&huart1, str, 1024);
   }
}
При этом если я перенастрою все так чтобы работало все по USART2 то все отрабатывает . Что отправляю в терминале то и получаю.

Но вот в таком виде, когда данные должны приходить на USART1 и уходить в USART2 ничего не происходит. Согласно отладчика в Callback даже не прилетаем.

Технически это прием по USART1 данных от GPS приемника и передача их в USART2 на виртуальный комп порт в терминал на ПК.

Один раз, когда я "прозванивал" сигнал анализатором то волшебным образом данные в терминале я начал видеть, однако потом когда перезапустил МК то все пропало.
Анализатором снимал данные непосредственно с припаянного в плату nucleo пина и сигнал там есть.

Подскажите пожалуйста в чем может быть проблема?

Добавлено after 22 minutes 19 seconds:
При этом во время работы программы str не пустая
Спойлер
Код:
Name : str
   Details:"b", '\0' <repeats 1022 times>
но значение не меняется, сколько бы я не прокручивал программу в отладчике


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: HAL_UARTEx_RxEventCallback не вызывается
СообщениеДобавлено: Пн апр 11, 2022 16:35:01 
Открыл глаза

Зарегистрирован: Вт июн 05, 2012 23:32:13
Сообщений: 46
Рейтинг сообщения: 0
Какаято ерунда происходит. Когда проверял просто передачу через прерывания (HAL_UART_Receive_IT(&huart1, str, 10);). То поймал момент, когда я разъединял линию и мне в терминал приходили 00 . Причем когда я брался(линия разорвана была) просто за провода (у меня макетные провода для ардуино) одной рукой за один провод, другой за другой то передача прерывалась. Потом соединил линию и увидел что сообщения пошли, переписал все на HAL_UARTEx_ReceiveToIdle_IT, не заработало. Снова переписал на HAL_UART_Receive_IT и все линия молчит, нулей тоже нет. Как бы я не трогал руками схему


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: HAL_UARTEx_RxEventCallback не вызывается
СообщениеДобавлено: Пн апр 11, 2022 17:00:51 
Сверлит текстолит когтями

Зарегистрирован: Вт ноя 19, 2019 06:10:18
Сообщений: 1270
Рейтинг сообщения: 0
The Rock писал(а):
То поймал момент, когда я разъединял линию и мне в терминал приходили 00

Сам подумай: как из линии, притянутой к "1", могут приходить "нули"? Неужели у тебя ничё не ёкает на "0" из UART?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: HAL_UARTEx_RxEventCallback не вызывается
СообщениеДобавлено: Пн апр 11, 2022 17:34:49 
Открыл глаза

Зарегистрирован: Вт июн 05, 2012 23:32:13
Сообщений: 46
Рейтинг сообщения: 0
tonyk писал(а):
Сам подумай: как из линии, притянутой к "1", могут приходить "нули"? Неужели у тебя ничё не ёкает на "0" из UART?

К сожалению это полностью первый мой опыт работы с МК и да я, пока этого не понимаю ( Приходили коды ASCII 00
КЗ на линиях нет, при прозвонке мультиметром напряжение на TX линии от 3.3В до 1.2В
Если отсоединить GPS и померить напряжение на пине входа МК, то судя по всему там нет никакой подтяжки никуда. Как и написано в кубе в характеристиках этой ножки
Спойлер
Код:
    GPIO_InitStruct.Pin = GPIO_PIN_7;
    GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);


Добавлено after 25 minutes 13 seconds:
Нашел где в кубе можно поменять режим ножки PB7 на Pull-Up .
Теперь данные в терминале на ПК я вижу, только если сделаю так:
Отсоединяю линию TX GPS приемника - подаю питание на стм - соединяю линию TX GPS приемника с МК и данные начинают поступать.
Если загрузится с подключенной линией, то не работает ... Изза чего это может быть?


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: HAL_UARTEx_RxEventCallback не вызывается
СообщениеДобавлено: Пн апр 11, 2022 19:16:54 
Сверлит текстолит когтями

Зарегистрирован: Вт ноя 19, 2019 06:10:18
Сообщений: 1270
Рейтинг сообщения: 0
The Rock писал(а):
напряжение на TX линии от 3.3В до 1.2В

ППЦ.
Может, сначала теорию изучим, а потом за проводки хвататься будем?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: HAL_UARTEx_RxEventCallback не вызывается
СообщениеДобавлено: Пн апр 11, 2022 23:14:50 
Открыл глаза

Зарегистрирован: Вт июн 05, 2012 23:32:13
Сообщений: 46
Рейтинг сообщения: 0
А вы можете пояснить что не так?
Я впринципе понимаю, что мультиметром я ничего не увижу. Это я так максимально подробно писал, то что я имею сейчас в надежде подучить какой-то прямой совет или помощь в решение моей ситуации


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: HAL_UARTEx_RxEventCallback не вызывается
СообщениеДобавлено: Вт апр 12, 2022 13:11:36 
Открыл глаза
Аватар пользователя

Зарегистрирован: Пн июл 31, 2017 10:53:04
Сообщений: 48
Рейтинг сообщения: 0
Настрой сначала первый UART на передачу. Проверь, летят ли байты. Когда убедишься, что летят, то только после этого настраивай второй на прием.
Также попробуй добавить вот это.

Код:
   HAL_NVIC_SetPriority(UART4_IRQn, 15, 0);
   HAL_NVIC_EnableIRQ(UART4_IRQn);


Ну только в твоем случае поменяй UART4 на свой


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: HAL_UARTEx_RxEventCallback не вызывается
СообщениеДобавлено: Вт апр 12, 2022 14:42:00 
Открыл глаза

Зарегистрирован: Вт июн 05, 2012 23:32:13
Сообщений: 46
Рейтинг сообщения: 0
Cheeseman писал(а):
Настрой сначала первый UART на передачу. Проверь, летят ли байты. Когда убедишься, что летят, то только после этого настраивай второй на прием.
Также попробуй добавить вот это.
Вы имеете ввиду проверить исправность UART1, при помощи например USB-UART конвертера?

А может быть проблема в какой-то коммутации или порядке вызова инициализаций? Получил сегодня второй приемник GPS он ведет себя один в один так же. Т.е. если загрузится без модуля и потом его подключить то все работает отлично. А если с подключенным то нифига


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: HAL_UARTEx_RxEventCallback не вызывается
СообщениеДобавлено: Вт апр 12, 2022 17:41:31 
Открыл глаза
Аватар пользователя

Зарегистрирован: Пн июл 31, 2017 10:53:04
Сообщений: 48
Рейтинг сообщения: 0
Имею в виду, что подключать после настройки и проверки периферии надо. Как понял один UART на отправку. Второй на прием. Настраиваешь сначала первый на отправку. Пишешь какую-нибудь функцию тип void SendData(uint8_t data). и в бесконечном цикле отправляешь байт, к примеру 0xAA . Анализатором или осциллографом проверяешь работает или нет. Далее настраиваешь второй USART на прием. Выдаешь какие-нибудь данные. Можешь даже с USARTA который на передачу настроен и проверяешь пришли данные или нет. После этого уже подключаешь железяку. У меня где-то на компе валялся код инициализации USARTA на прием и на передачу. Завтра скину, если не забуду. Если правильно понял, то с ним именно проблема


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: HAL_UARTEx_RxEventCallback не вызывается
СообщениеДобавлено: Вт апр 12, 2022 20:30:19 
Открыл глаза

Зарегистрирован: Вт июн 05, 2012 23:32:13
Сообщений: 46
Рейтинг сообщения: 0
Cheeseman, Спасибо с советом о перепроверке вы мне помогли. Я открыл чистый проект в кубе, и у меня все заработало. В итоге вооружившись двойными слешами нашел, что у меня какаято проблема в инициализации дисплея. Но при этом если включить прием UART перед инициализацией дисплея то все работает. Спасибо!


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y