ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
18 июля
1430828 Топик полностью
Idler (28.04.2024 20:19, просмотров: 85) ответил RxTx на Коллега еще увлекается таким: он вызывает исходные функции HAL_UART_Transmit_IT() / HAL_UART_Receive_IT() и проч. Но прям внутри HAL функций прерываний (файлик stm32??xx_it.c) он всегда пишет свой примитивный код: читает или пишет прямиком из UART регистра. Это работает. Но я крайне советую обязательно обслуживать ошибки UART, потому что ошибка UART будучи необработанной так и остается висеть и причиняет прерывание снова и снова.
А вот тут вы, батенька, неправы... Прерывание общее для TDBE/RDBF (и ошибок, если включено). Соответственно, чтение регистра состояния в прерывании обязательно, для правильной обработки. А при чтении данных после чтения регистра состояния, все ошибки сбрасываются аппаратно... 

То есть, читаем состояние в какую-нибудь переменную, потом, если в ней есть RDBF, обязательно вычитываем данные, а дальше уже по желанию, но биты ошибок уже из переменной.