Альтернативное использование UART как таймера в STM32

В условиях нехватки таймеров в микроконтроллерах STM32, UART можно эффективно использовать для генерации периодических прерываний. UART предоставляет гибкую настройку скорости передачи данных, фактически, делитель частоты, что позволяет точно контролировать интервалы между отправками байтов и, как следствие, частоту прерываний. Для этого UART настраивается на передачу данных, даже если его выходы не подключены, а прерывания вызываются после завершения передачи кадра, который можно растянуть до 12 бит (9 бит данных + 2 стоповых бита + стартовый). Частоту прерываний можно менять «на лету», просто меняя делитель в регистре BRR.
Альтернативное использование UART как таймера в STM32
Изображение носит иллюстративный характер

Использование UART в качестве таймера без DMA реализуется за счет обработки прерываний по окончании отправки каждого байта. Внутри обработчика прерывания необходимо повторно инициировать передачу данных, чтобы обеспечить непрерывную генерацию прерываний. Хотя этот метод и прост в реализации, он имеет некоторые недостатки, связанные с задержкой вхождения в прерывание и исполнением кода в обработчике, что может привести к отклонению от расчетной частоты.

Для более точной генерации прерываний можно использовать контроллер DMA, который снижает задержку. DMA позволяет передавать данные в UART без участия CPU, что уменьшает задержку между прерываниями. В этом случае DMA настраивается на циклическую передачу данных в регистр TDR UART, а прерывания возникают по завершении цикла передачи. Использование DMA также позволяет уменьшить частоту следования прерываний. Для этого в канале DMA настраивается количество передач данных.


Новое на сайте

19216Смертельный симбиоз спама и эксплойтов: как хакеры захватывают корпоративные сети за 11... 19215Как новые SaaS-платформы вроде Starkiller и 1Phish позволяют киберпреступникам незаметно... 19214Инженерия ужаса: как паровые машины и математика создали гений Эдгара Аллана по 19213Трансформация первой линии SOC: три шага к предиктивной безопасности 19212Архитектура смыслов в профессиональной редактуре 19211Манипуляция легитимными редиректами OAuth как вектор скрытых атак на правительственные... 19210Как активно эксплуатируемая уязвимость CVE-2026-21385 в графике Qualcomm привела к... 19209Как беспрецедентный бунт чернокожих женщин в суде Бостона разрушил планы рабовладельцев? 19208Как новые поколения троянов удаленного доступа захватывают системы ради кибершпионажа и... 19207Почему мировые киберпреступники захватили рекламные сети, и как Meta вместе с властями... 19206Как фальшивый пакет StripeApi.Net в NuGet Gallery незаметно похищал финансовые API-токены... 19205Зачем неизвестная группировка UAT-10027 внедряет бэкдор Dohdoor в системы образования и... 19204Ритуальный предсвадебный плач как форма протеста в традиционном Китае 19203Невидимая угроза в оперативной памяти: масштабная атака северокорейских хакеров на... 19202Как уязвимость нулевого дня в Cisco SD-WAN позволяет хакерам незаметно захватывать...
Ссылка