1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/awesomeoy-STM32F103_Serials

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
README.md 3.5 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 01.12.2024 10:13 45cf69b

Основы простого фреймворка последовательного порта на базе чипа STM32

Описание:

  1. Последовательный порт принимает данные через DMA и получает неопределённые объёмы данных с помощью прерываний в режиме ожидания. Данные последовательного порта передаются через DMA.
  2. Фреймворк разработан на основе библиотеки Cubemx для отладки чипов STM32F103. В настоящее время поддерживаются только три последовательных порта и виртуальный последовательный порт USB. Если необходимо расширить количество портов, можно просто добавить код.
  3. Фреймворк охватывает функции последовательного порта в библиотеке Cubemx, включая:
    • void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart);
    • void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart);
    • void HAL_UART_ErrorCallback(UART_HandleTypeDef huart). Если используется виртуальный последовательный порт USB, функция usb_receive_callback(uint8_t data, uint32_t len) должна быть размещена в позиции приёма данных USB.
  4. Необходимо внести локальные изменения в библиотеку последовательного порта Cubemx:
    • В функциях HAL_UART_Receive_DMA() и HAL_UART_Transmit_DMA() присвоить значение NULL функции вызова полупрерывания передачи DMA.
    • huart->hdmarx->XferHalfCpltCallback = NULL;

Использование: (исходный код фреймворка находится в каталоге serials)

  1. Включить соответствующий аппаратный модуль последовательного порта, выбрав определение макроса, например, для включения последовательного порта 1, изменить на #define USART1_ENABLE 1.
  2. Вызвать функцию serial_init() для инициализации ресурсов последовательного порта и включить приём данных последовательного порта.
  3. Пользовательский код верхнего уровня может переопределить функцию serial_process_callback() и вызывать её циклически для обработки данных последовательного порта при отправке и получении.
  4. Пользовательский верхний уровень может вызвать функцию serial_write() для записи данных в буфер последовательного порта, указав идентификатор последовательного порта.
  5. Пользовательский верхний уровень может вызвать функцию serial_read() для чтения данных из буфера приёма последовательного порта, указав идентификатор последовательного порта.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/awesomeoy-STM32F103_Serials.git
git@api.gitlife.ru:oschina-mirror/awesomeoy-STM32F103_Serials.git
oschina-mirror
awesomeoy-STM32F103_Serials
awesomeoy-STM32F103_Serials
master