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

ЭЛЕМЕНТЫ И КОМПОНЕНТЫ 30 WWW.CTA.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА • № 1 / 2026 предназначенной для такого исполь- зования. Далее нужно создать функцию кон- фигурации используемого порта. Дела- ется это заполнением полей соответ- ствующей структуры, хранящейся в файле stm32f10x_gpio.с. Пример функции: void GPIO_Configuration(void) { // Объявление структуры (InitStructure), которая содержит все параметры для настройки периферийного устройства в виде переменных – членов структуры. GPIO_InitTypeDef GPIO_ InitStructure; RCC_APB2PeriphClockCmd(RCC_ APB2Periph_GPIOB | RCC_ APB2Periph_GPIOC, ENABLE); GPIO_DeInit(GPIOB); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_12 | GPIO_ Pin_13; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // Двоичный выход. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // Ограничение быстродействия до 50 МГц. GPIO_Init(GPIOB, &GPIO_ InitStructure); GPIO_DeInit(GPIOC); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; // Двоичный выход. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // Ограничение быстродействия до 50 МГц. // Вызываем функцию инициали- зации, куда передаём указатель на сформированную структуру: GPIO_Init(GPIOC, &GPIO_ InitStructure); } Все возможные значения для пара- метра GPIO_Mode содержатся в функ- ции stm32f10x_gpio.h: ● GPIO_Mode_AIN – аналоговый вход; ● GPIO_Mode_IPD – вход с подтяжкой к земле (англ. Pull-down); ● GPIO_Mode_IN_FLOATING – вход без подтяжки (англ. Float); ● GPIO_Mode_IPU – вход с подтяжкой к питанию (англ. Pull-up); ● GPIO_Mode_Out_OD – выход с откры- тым стоком (англ. Open Drain); ● GPIO_Mode_Out_PP – выход двумя со- стояниями (англ. Push-Pull); ● GPIO_Mode_AF_OD – выход с откры- тым стоком для альтернативных функций (англ. Alternate Function). Используется в случаях, когда выво- дом должна управлять периферия, прикреплённая к данному разряду порта (например, вывод Tx USART и т.п.); ● GPIO_Mode_AF_PP – то же самое, но с двумя состояниями. Для большинства устройств также требуется вызов команды «включе- ние». Пример для включения USART1 и ADC: USART_Cmd(USART1, ENABLE), ADC_Cmd(ADC1, ENABLE). Конфигурация портов GPIO завер- шена. При выполнении кода в функции main() должна быть обя- зательно вызвана функция GPIO_ Configuration(); Работа с прерываниями Вначале надо настроить и проини- циализировать контроллер прерыва- ний (NVIC – Nested Vectored Interrupt Controller). В архитектуре Cortex M3 каждому прерыванию можно выста- вить свой приоритет для случаев, ког- да возникает несколько прерываний одновременно. Поэтому NVIC пред- ставляет несколько вариантов форми- рования приоритетных групп [2]. При- Рис. 10. Структура DMA

RkJQdWJsaXNoZXIy MTQ4NjUy