Освоив прием данных по UART на микроконтроллере stm32f103c8 уже можно пытаться собирать например контроллер ЧПУ станка управляемого с компьютера через USB-UART переходник, а также другие устройства управление которыми возможно при использовании такого переходника. Рассмотрим например управление трехцветным светодиодом. Для этого можно собрать схему например как на рисунке:
Рисунок 1 - Подключение RGB светодиода с общим анодом и USB-UART переходника к отладочной плате с микроконтроллером stm32f103c8
О том как сделать передачу по UART см. предыдущий урок- https://electe.blogspot.com/2022/01/uart-stm32f103c8-cmsis.html
Далее в коде. Для начала, как всегда, надо включить тактирование периферийных устройств которые будут использоваться. В данном случае это USART1 и порт A:
Пин UARTа1 RX (A10) надо настроить на вход с подтяжкой:Для настройки скорости используется регистр USART1-BRR:
В данный регистр заноситься число на которое делиться частота шины от которой тактируется USART чтобы получилась нужная скорость. Т.е. если например нужна скорость 9600 бод а частота шины 72 000 000 Гц (по умолчанию) то в регистр нужно занести = 72 000 000 / 9600 = 7500. Для основной настройки UARTа есть первый управляющий регистр USART1->CR1:Для приема по UART с прерыванием нужно установить биты 2, 5 и 13 данного регистра. А также надо указать вектор прерывания. Для данной задачи основной цикл можно оставить пустым. Функция которая вызовется при возникновении прерывания от USART1 называется USART1_IRQHandler().
В эту функцию надо поместить код обработки прерывания. Чтобы отреагировать именно на прием, в эту функцию следует поместить проверку флага приема который является битом 5 статус-регистра:
и выполнить с ним какие нибудь операции. Например можно включить нужный свет светодиода в зависимости от пришедшего байта данных. Полный код программы:
Видео:
Комментариев нет:
Отправить комментарий