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 ответов

21 просмотр

AbortRecieve

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

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

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

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
Карта сайта