Современная электроника №8/2021

ПРОЕКТИРОВАНИЕ И МОДЕЛИРОВАНИЕ 38 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 8 2021 нения двух основных действий: подклю- чения тактового сигнала и определения режима работы. В рассмотренном выше примере подключение тактового сиг- нала реализовано с помощью следую- щегофрагмента кода: RCC->APB2ENR |= RCC_APB2ENR_IOPAEN, которым даётся указание микроконтроллеру подсоеди- нить линии порта РА кшине APB2, уста- новив соответствующий бит IOPAEN (где РА – имя порта) в регистре разрешения тактирования периферийных блоков RCC_APB2ENR. Запись RCC->APB2ENR представляет собой обращение к реги- стру APB2ENR из группы регистров тактирования и контроля RCC. Анало- гичным образом с помощью команды RCC->APB2ENR |=RCC_APB2ENR_USART1EN включается тактирование модуля USART1. Для переключения режимов работы портов ввода/вывода STM32 Cortex-M3 используются два 32-разрядных реги- стра для каждого GPIO. Они позволяют произвольно настроить режим работы любойотдельной линии. РегистрGPIOx_ CRL отвечает за линии с номерами от 0 до 7, GPIOx_CRH – за линии от 8 до 15 (где x – это имя порта). Внашемприме- ре для последовательнойпередачи дан- ных на экран виртуального терминала необходимо настроить режим работы линии РА9, что осуществляется с помо- щью 1 бита регистра конфигурации GPIOА_CRH. Для линии РА9 в регистре GPIOА_CRHимеется два двухразрядных поля: CNF1 иMODE1. Первое определя- ет тип работы линии, второе – направ- ление передачиинформациипо линии (все битыдоступныдля чтения/записи). Запись GPIOA->CRH = 0x00000090 в коде программы означает, что линия РА9 порта РА микроконтрол- лера STM32F103C4 имеет специаль- ное назначение (работает на вывод данных по USART), для чего для этой линии в поле MODE записано значение 01 (линия работает на вывод данных с максимальной частотой переключе- ния 10 МГц), а в поле CNF – значение 10 (цифровой выход c альтернативной функцией). Двоичный код 1001 соот- ветствует шестнадцатеричному зна- чению – 9, которое записано в первый разряд регистра конфигурации GPIOА_ CRH линий 8...15 порта РА. Каждый разряд регистров GPIOx_CRL и GPIOx_CRH управляет своим разря- дом порта. Если в каком-либо разряде регистров GPIOx_CRL и GPIOx_CRH в поле MODE записана комбинация 00, то соответствующий разряд порта работа- ет как вход. Если же в поле MODE это- го разряда записаны значения 01, 10, 11, то разряд порта работает как выход общего назначения (если в поле CNF записаны значения 00 или 01) или спе- циального (если в поле CNF записаны значения 10 или 11). Включение модуля USART1 и его пере- датчика выполняется установкой фла- гов UE и ТЕ регистра USART1_СR1, то есть записью логической единицы в 13 и 3 биты регистра USART1_СR1 с помо- щью команд USART1->CR1 = (1<<13) и USART1->CR1 |= (1<<3). Флаги регистров USART1_СR2 и USART1_СR3 в нашем примере не имеют значения. Расчёт зна- чения скорости передачи данных и его запись в регистр USART1_BRR выполня- ется с помощью командыUSART1->BRR = (F_CPU/ (16 * baudrate))*16. Таким образом, для того чтобы послать данные через USART в микро- контроллере STM32F103C4, необходимо: Рис. 6. Вывод символов АВС на экран виртуального терминала через последовательный интерфейс USART микроконтроллера STM32F103C4 Рис. 7. Добавление в окно Watch Window регистров: (а) модуля USART1, (б) порта РА а б

RkJQdWJsaXNoZXIy MTQ4NjUy