STM32. UART, Прием данных, не зная размера данных. Работа с прерываниями. Урок 7.

preview_player
Показать описание
Привет друзья! Решил выпустить небольшую серию видеоуроков о переходе с платформы Arduino на STM32. Скажу сразу - я не профессионал. Я так же учусь. Надеюсь мои разборы хоть кому-то будут полезны :) Данный курс нацелен больше на новичков. Тех, кто только-только начинают осваивать 32-битные МК от STMicroelectronics. Если есть чего предложить, показать - милости просим к нам в команду.
Использую для конфигурации CubeMX и библиотеку HAL.
Пишу в Atollic TrueSTUDIO for STM32 9.3.0

00:00 Введение
00:05 Схема подключения
00:14 Рассмотрение сигнала с ArduinoIDE(где \0 символ?)
02:12 Создание проекта
04:01 HAL_UART_Receive_IT(принимает данные, зная размер)
09:53 HAL_UART_Receive_IT(принимает данные, не зная размер. ориентируемся по символу)
Рекомендации по теме
Комментарии
Автор

Как я понял, реализовано получение посимвольно с парсингом по символу "конец строки". В контроллерах STM32 (не знаю во всех ли) есть прерывание по таймауту приема и прерывание по IDLE пакету. Я ожидал, что видео будет про это. Т.к. хотелось бы кое-где использовать данный функционал, но пока не дошли руки его поизучать.

jorchick
Автор

Ребят, в примере был подключен DMA по USART1_RX. Можно было этого не делать. В примере он не используется. Кого интересовала работа с флагом IDLE - см. урок 9 (STM32. UART, Прием данных, не зная размера данных. UART_IT_IDLE. Работа с прерываниями.)

Solderingironspb
Автор

Может я повторяюсь, но такой вопрос, на ардуино нано ведь rx и tx используют 5v, а как тога получается, что Вы на прямую подключаете stm? stm работаю с 3, 3v на сколько я знаю.

MiaminZD
Автор

Приветствую. Подскажите чем отличается callback от IRQHandler.
Где то читал что прерывание одно на кучу функций (на прием, передачу и тд) и всегда срабатывает IRQHandler.
А если нам нужно отследить конкретное то используем callback . Я правильно понимаю?

openFrimeTv
Автор

Привет.
Сделать более свежий комит по исходникам к этому уроку .

nobodyfreeman
Автор

А с чего взяли то, что с терминала должен конец строки прийти ввиде \0? Вроде в жизни никогда такого не было. Максимум cr или lf или и то и то.. Чтоб превратить в строку си надо изменить последний символ на \0 ну или предпоследний в зависимости от терминпла

AlmazKamalov
Автор

Как инициализировать передачу в UART на ноги PA9/PA10 в ардуино IDE?

IvanEng
Автор

и еще одно, не пойму зачем очередь. что она дает?

openFrimeTv
Автор

Добрый день, работаю с HAL...по функции HAL_UART_Recive все прекрасно принимается и работает. Но когда отправляются две команды подряд, МК отрабатывает первую, отвечает результат по тому же UARTу, но новые команды уже не принимает. С чем это может быть связано и как это исправить?

РамазанХайбуллин