Каждый порт ввода/вывода общего назначения (GPIO - General-Purpose I/Os) имеет:
Каждый GPIO порт для настройки 16-ти входов/выходов имеет четыре 32-битных, размещённых в памяти, регистра управления (GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR, GPIOx_PUPDR).
Каждый GPIO порт имеет два 16-разрядных, размещенных в памяти, регистра данных: регистры ввода и вывода данных (GPIOx_IDR и GPIOx_ODR).
Регистр побитового изменения данных (GPIOx_BSRR - bit set reset register) представляет собой 32-разрядный регистр, который позволяет устанавливать и сбрасывать каждый отдельный бит в регистре данных вывода (GPIOx_ODR).
Размер регистра GPIOx_BSRR в два раза больше размера GPIOx_ODR.
Каждому биту в GPIOx_ODR, соответствуют два бита управления в GPIOx_BSRR: BSRR (i) иBSRR (i + size).
Запись «1» в бит BSRR (i) устанавливает в «1» соответствующий бит ODR (i). То есть младшие 16 разрядов (15…0) регистра GPIOx_BSRR отвечают за установку «1» в GPIOx_ODR.
Запись «1» в бит BSRR (i + size) сбрасывает в «0» соответствующий бит ODR (i). То есть старшие 16 разрядов (31…16) GPIOx_BSRR отвечают за установку «0» в регистре GPIOx_ODR.
Запись «0» в любой бит GPIOx_BSRR не оказывает никакого влияния на соответствующий бит в GPIOx_ODR.
Если есть попытка одновременной устанавки и сбрасывания бита в GPIOx_BSRR, то приоритет имеет установка бита регистра GPIOx_ODR в «1».
Регистр GPIOx_LCKR используется для блокировки изменения регистров GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR, GPIOx_PUPDR, GPIOx_AFRL и GPIOx_AFRH. Должна быть использована определенная последовательность записи.
Пока всё. Более подробная информация будет позже.
Есть два регистра GPIOx_AFRL и GPIOx_AFRH, которые предоставляют возможность выбрать одну из шестнадцати альтернативных функций для каждого ввода/вывода.
Пока всё. Более подробная информация будет позже.
Все порты имеют возможность использования их для внешнего прерывания. Для использования внешнего прерывания, порт должен быть соответственно настроен.