189 похожих чатов

Здравствуйте! При приёме данных по UART в STM32 при использовании

HAL, если что-то было послано до вызова HAL_UART_Receive_IT, то этот байт попадает в считывание. Например, если сначала заинитить MX_LPUART1_UART_Init(), а потом только подать питание на модуль блютуза HC-05 или LoRa E32, то они оба шлют какой-то мусор, либо если отправлено данных больше, чем ожидалось, и недопринятое в следующий приём попадает.
Кто нибудь сталкивался с таким? Как можно сбросить регистры или какой-нить функцией перед приёмом? Видимо HAL_UART_Receive_IT не сбрасывает, а сразу забирает. Пробовал перед ним вызывать HAL_UART_Stop_IT, он внутри вроде сбрасывает, но не помогает всё равно.

3 ответов

25 просмотров

AbortRecieve

Если точнее то HAL_UART_AbortReceive_IT

Александр-Ларюшкин Автор вопроса

Сам спросил, сам отвечу. Там выставляется флаг overrun и ошибка. Два варианта, либо выключить overrun в кубе, либо снимать вручную (__HAL_UART_CLEAR_OREFLAG(&hlpuart1); hlpuart1.ErrorCode = HAL_UART_ERROR_NONE;). И в обоих случаях надо чистить регистр приёма __HAL_UART_FLUSH_DRREGISTER(&hlpuart1); перед Receive.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта