Обновлены шапки и по мелочи

This commit is contained in:
2025-12-28 14:06:19 +03:00
parent f3e76e105a
commit 8b930ebe12
12 changed files with 523 additions and 251 deletions

View File

@@ -24,49 +24,76 @@
##### Как использовать этот драйвер #####
==============================================================================
1. Настройка периферии (periph_config.h):
(+) Определить структуры UART_ExtInit_TypeDef для нужных UART:
uart0_config, uart1_config
(+) Настроить скорость, стоп-биты, четность, длину данных
(+) Настроить FIFO и направление (Tx, Rx или оба)
(+) Определить callback-функции (можно NULL)
(+) Определить пины TX/RX для UART0/UART1
(+) Включить/отключить очередь сообщений для отправки: USE_TX_QUEUE в uart.h
1. Настройка в periph_config.h:
(+) Определите uart0_config, uart1_config для нужных UART
(+) Используйте макросы для направления:
• UART_Direction_None - прием и передача отключены
• UART_Direction_RxTx - полный дуплекс
• UART_Direction_Tx - только передача
• UART_Direction_Rx - только прием
2. Инициализация UART:
(+) uart_init_first() — первичная настройка GPIO, тактирования и NVIC
(+) uart_init(&huart, &config) инициализация конкретного UART с конфигурацией
2. Инициализация:
(+) uart_init_first() - настройка GPIO, тактирования и прерываний
(+) uart_init(&huart, &config) - инициализация конкретного UART
3. Callback-функции:
(+) UART_Set_Callback(&huart, UART_Callback_Rx, Callback) — вызов при приёме данных
(+) UART_Set_Callback(&huart, UART_Callback_Tx, Callback) — вызов при завершении передачи
(+) UART_Set_Callback(&huart, UART_Callback_Idle, Callback) — вызов при событии Idle
(+) UART_Set_Callback(&huart, UART_Callback_Error, Callback) — вызов при ошибках
(+) UART_Set_Callback(&huart, UART_Callback_Rx, func) - при завершении приема
(+) UART_Set_Callback(&huart, UART_Callback_Tx, func) - при завершении передачи
(+) UART_Set_Callback(&huart, UART_Callback_Idle, func) - при обнаружении IDLE
(+) UART_Set_Callback(&huart, UART_Callback_Error, func) - при ошибках
4. Запуск UART и FIFO:
(+) UART_Start(&huart, TxFifoLevel, RxFifoLevel) включает UART и настраивает FIFO
4. Запуск UART:
(+) UART_Start(&huart, TxFifoLevel, RxFifoLevel) - включение UART и настройка FIFO
5. Передача и приём данных:
- Режим Polling (blocking):
(+) UART_Transmit(&huart, buf, size, timeout) — передача данных с ожиданием
(+) UART_Receive(&huart, buf, size, timeout) — приём данных с ожиданием
- Режим Interrupt (non-blocking):
(+) UART_Transmit_IT(&huart, buf, size) — передача данных через прерывания
(+) UART_Receive_IT(&huart, buf, size) — приём данных через прерывания
- Режим Polling:
(+) UART_Transmit(&huart, buf, size, timeout) - блокирующая передача
(+) UART_Receive(&huart, buf, size, timeout) - блокирующий прием
- Режим Interrupt:
(+) UART_Transmit_IT(&huart, buf, size) - неблокирующая передача
(+) UART_Receive_IT(&huart, buf, size) - неблокирующий прием
6. Обработка прерываний UART:
(+) uart_irq_handler(&huart) — общий обработчик ISR для RX/TX FIFO, ошибок и Idle
- В обработчиках автоматически вызываются соответствующие callback-функции
и сбрасываются флаги
- Поддерживается очередь передачи для предотвращения потери данных
6. Обработка прерываний:
(+) Прерывания обрабатывают TX FIFO, RX FIFO, ошибки и состояние IDLE
7. GPIO для UART:
(+) uart0_gpio_init()/uart0_gpio_deinit() — инициализация и деинициализация UART0
(+) uart1_gpio_init()/uart1_gpio_deinit() — инициализация и деинициализация UART1
(+) Пины настраиваются автоматически при вызове uart_init_first()
(+) При необходимости можно вызвать uart0_gpio_deinit() для восстановления
8. Режимы работы:
(+) Polling (blocking) — функции блокируются до завершения передачи/приёма
(+) Interrupt (non-blocking) — передача/приём через прерывания, управление через callback
==============================================================================
##### Особенности работы #####
==============================================================================
- Очередь передачи (USE_TX_QUEUE):
- Циклический буфер на 32 сообщения (TX_QUEUE_SIZE)
- Предотвращает потерю данных при частой отправке
- Включается автоматически при USE_TX_QUEUE=1 в uart.h
- Сообщения обрабатываются последовательно по завершении предыдущей передачи
- FIFO и прерывания:
- Аппаратный FIFO 16 байт для приема и передачи
- Уровни прерываний настраиваются через TxFifoLevel и RxFifoLevel
- Прерывание TX FIFO генерируется когда FIFO не полон
- Прерывание RX FIFO генерируется когда FIFO не пуст
- Состояние IDLE:
- Обнаруживается по таймауту приема (32 бит-времени)
- Генерирует прерывание RecieveTimeout
- Полезно для определения конца пакета переменной длины
- Обработка ошибок:
- Обрабатываются все типы ошибок UART: фрейм, паритет, переполнение, break
- При ошибке вызывается ErrCallback и сбрасываются флаги ошибок
- Ошибки не останавливают работу UART
- GPIO автоматическая настройка:
- Пины TX/RX настраиваются в AltFunc режим при инициализации
- Поддерживаются стандартные пины (PB10/PB11 для UART0, PB8/PB9 для UART1)
- Режимы работы:
- Polling: простой, но блокирующий, подходит для инициализации и отладки
- Interrupt: неблокирующий, требует прерываний и поддерживает callback-функций
- Queue: расширенный interrupt режим с буферизацией сообщений
@endverbatim
******************************************************************************