Подробное описание
Основной прием данных производится в буфер через DMA канал. По заполнению половинок буфера данные извлекаются и передаются в обработчик. В случае применения RTOS данные передаются в предусмотренный для данных queue (или в другой терминологии - в "message box"). Буфер может быть достаточно большого размера - 128 и более байт и в случае, если передача остановилась где то посередине и DMA прерывание не возникает, то через несколько пустых временных окон приема символов возникает прерывание "IDLE line" от USART, в данном прерывании вытаскивается хвост данных и DMA канал сбрасывается в стартовое состояние.
Дан проект-пример. Основные файлы - main.c и STM32F10x_it.c. В main.c производится вся настрока периферии. В во втором прерывании все необходимые обработчики, а именно - от DMA и от USART.
|