Порты ввода/вывода общего назначения (GPIO - General-Purpose I/Os)

Каждый порт ввода/вывода общего назначения (GPIO - General-Purpose I/Os) имеет:

  • четыре 32-разрядных регистра конфигурации (GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR и GPIOx_PUPDR),
  • два 32-битных регистра данных (GPIOx_IDR и GPIOx_ODR),
  • 32-битный регистр побитовой установки или сброса данных (GPIOx_BSRR),
  • 32-битный регистр блокировки изменения конфигурации(GPIOx_LCKR)
  • два 32-разрядный регистра выбора альтернативной функции(GPIOx_AFRH и GPIOx_AFRL).

Регистры конфигурации портов ввода/вывода

Каждый GPIO порт для настройки 16-ти входов/выходов имеет четыре 32-битных, размещённых в памяти, регистра управления (GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR, GPIOx_PUPDR).

  • Регистр GPIOx_MODER используется для выбора направления ввода / вывода (ввод, вывод, AF – альтернативная функция, аналоговый ввод).
  • Регистры GPIOx_OTYPER и GPIOx_OSPEEDR используются для выбора типа вывода (двухтактный или с открытым стоком) и скорости или частоты обновления данных.
  • Регистр GPIOx_PUPDR используется для выбора «подтягивания вверх» или «подтягивания вниз» независимо от направления ввода / вывода.

Регистры ввода/вывода данных портов

Каждый GPIO порт имеет два 16-разрядных, размещенных в памяти, регистра данных: регистры ввода и вывода данных (GPIOx_IDR и GPIOx_ODR).

  • GPIOx_ODR хранит данные для вывода, доступен для чтения / записи.
  • Входные данные через I / O хранятся в регистре данных ввода (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».

Регистр блокировки изменения конфигурирования портов GPIO.

Регистр GPIOx_LCKR используется для блокировки изменения регистров GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR, GPIOx_PUPDR, GPIOx_AFRL и GPIOx_AFRH. Должна быть использована определенная последовательность записи.

Пока всё. Более подробная информация будет позже.

Регистры альтернативной функции ввода/вывода.

Есть два регистра GPIOx_AFRL и GPIOx_AFRH, которые предоставляют возможность выбрать одну из шестнадцати альтернативных функций для каждого ввода/вывода.

Пока всё. Более подробная информация будет позже.

Внешнее прерывание.

Все порты имеют возможность использования их для внешнего прерывания. Для использования внешнего прерывания, порт должен быть соответственно настроен.

Метки / Tags: