Программирование ARM STM32F429: GPIO и альтернативные функции Tue, May 26 2020  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

STM32F429: GPIO и альтернативные функции Печать
Добавил(а) microsin   

У каждого из портов ввода/вывода общего назначения (general-purpose I/O port, GPIO) есть четыре 32-битных конфигурационных регистра (GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR и GPIOx_PUPDR, здесь x заменяется буквой A, B, C, D, E, F, G, H, I, и у некоторых представителей MCU даже есть порты GPIOJ и GPIOK), два 32-битных регистра данных (GPIOx_IDR и GPIOx_ODR), 32-битный регистр установки/сброса уровня (GPIOx_BSRR), 32-битный регистр блокировки (GPIOx_LCKR) и два 32-битных регистра альтернативных функций GPIO (GPIOx_AFRH и GPIOx_AFRL).

Примечание: информация в этой статье (перевод документации [1]) относится ко всему семейству STM32F4xx, если специально не указано что-то другое.

[Основные функции GPIO]

• До 16 управляемых ножек I/O.
• Состояния выхода: двухтактный драйвер (push-pull) или открытый сток (open drain) с возможностью подключения внутренних верхних (pull-up) и нижних (pull-down) подтягивающих резисторов.
• Поступление данных на выход либо от регистра данных выхода (output data register, GPIOx_ODR), либо от периферийного устройства (альтернативная функция выхода GPIO).
• Выбор скорости переключения выхода для каждой ножки I/O.
• Состояния входа: обрыв или высокое сопротивление (floating), подтяжка вверх (pull-up), подтяжка вниз (pull-up/down), аналоговая функция.
• Входные данные поступают в регистр данных входа (input data register, GPIOx_IDR), или в периферийное устройство (альтернативная функция входа GPIO).
• Регистр установки и сброса бит (GPIOx_BSRR) для побитного доступа на запись в регистр GPIOx_ODR.
• Механизм блокировки (GPIOx_LCKR) предоставляется для заморозки конфигурации I/O.
• Аналоговая функция.
• Регистры выбора альтернативных функций (AF) входа/выхода (до 16 AF на ножку I/O).
• Возможность быстрого переключения, позволяющая менять уровень за каждые 2 периода тактов.
• Гибкое мультиплексирование выводов, позволяющее использовать ножки I/O как GPIO или как аппаратные выводы одного из нескольких внутренних периферийных устройств микроконтроллера.

[Функциональное описание GPIO]

Каждый бит порта GPIO может быть индивидуально сконфигурирован программно для работы в следующих режимах:

• Плавающий вход (высокое входное сопротивление).
• Вход с подтяжкой к плюсу питания (pull-up).
• Вход с подтяжкой к минусу питания (pull-down).
• Аналоговая функция.
• Выход с открытым стоком (open-drain) с верхним нагрузочным резистором (pull-up) или с функцией нижней подтяжки (pull-down).
• Выход с двухтактным драйвером (push-pull), с возможностью верхней или нижней подтяжки.
• Альтернативная функция с двухтактным выходом и с возможностью верхней или нижней подтяжки.
• Альтернативная функция с открытым стоком и с возможностью верхней или нижней подтяжки.

Примечание: подробные физические и электрические характеристики каждого порта I/O следует искать в даташите на конкретную модель микроконтроллера STM32.

Каждый вывод порта I/O свободно управляется программой, однако к регистрам порта I/O осуществляется доступ как к 32-битным словам, половинам слова или байтам. Назначение регистра GPIOx_BSRR - предоставить атомарный доступ на чтение/модификацию к любому регистру GPIO. Таким образом, отсутствует риск возникновения прерывания между доступами на чтение и запись.

На рис. 25 показана базовая структура бита I/O, который поддерживает возможность подачи на вход уровня 5V (так называемая функция 5V tolerant входа при напряжении питания 3.3V для портов I/O). В таблице 39 представлены возможные конфигурации бита порта.

STM32F4xx structure5V tolerant IO port bit fig25

Рис. 25. Базовая структура 5V-tolerant ножки порта I/O.

Примечание (1): VDD_FT потенциал специфичен для 5V-tolerant I/O и отличается от VDD.

Таблица 35. Конфигурации бита порта (1).

MODER(i)
[1:0]
OTYPER(i) OSPEEDR(i)
[B:A]
PUPDR(i)
[1:0]
Конфигурация I/O
01 0 SPEED[B:A] 0 0 GP-выход PP
0 0 1 GP-выход PP+PU
0 1 0 GP-выход PP+PD
0 1 1 Зарезервировано
1 0 0 GP-выход OD
1 0 1 GP-выход OD+PU
1 1 0 GP-выход OD+PD
1 1 1 Зарезервировано
10 0 0 0 AF PP
0 0 1 AF PP+PU
0 1 0 AF PP+PD
0 1 1 Зарезервировано
1 0 0 AF OD
1 0 1 AF OD+PU
1 1 0 AF OD+PD
1 1 1 Зарезервировано
00 x x x 0 0 Вход Плавающий вход
x x x 0 1 Вход PU
x x x 1 0 Вход PD
x x x 1 1 Зарезервировано (плавающий вход)
11 x x x 0 0 Вход/выход Analog
x x x 0 1 Зарезервировано
x x x 1 0
x x x 1 1

Примечание (1): GP = general-purpose, PP = push-pull, PU = pull-up, PD = pull-down, OD = open-drain, AF = alternate function.

GPIO. Во время сброса и непосредственно после него альтернативные функции не активны, и ножки портов I/O конфигурируются в режиме плавающего входа с высоким сопротивлением (input floating mode).

Выводы порта отладки после сброса находятся в альтернативной функции (AF) pull-up/pull-down:

• PA15: вход JTDI с pull-up.
• PA14: вход JTCK/SWCLK с pull-down.
• PA13: вход JTMS/SWDAT с pull-up.
• PB4: вход NJTRST с pull-up.
• PB3: выход JTDO в отключенном состоянии (floating state).

Когда вывод сконфигурирован как выход, записанное значение в регистр выходных данных (GPIOx_ODR) выводится на ножку порта I/O. Можно использовать выходной драйвер ножки порта в режиме двухтактного выхода (push-pull mode) или в режиме открытого стока (open-drain mode, активируется только нижнее плечо N-MOS, когда на выход выводится лог. 0).

Регистр входных данных (GPIOx_IDR) защелкивает в себя данные, присутствующие на ножке I/O, на каждом такте AHB1.

Все ножки GPIO имеют внутренние слабые резисторы подтяжки к плюсу питания (pull-up) и к земле (pull-down), которые могут быть активированы или нет, в зависимости от значения в регистре GPIOx_PUPDR.

Мультиплексирование и отображение ножек I/O. Ножки I/O микроконтроллера подключены ко встроенным периферийным устройствам через мультиплексор, который позволяет в любой момент времени подсоединить в выводу I/O только одну из альтернативных функций (AF). Таким образом не может быть конфликта между разными периферийными устройствами, у которых используется общая ножка порта I/O.

У каждой ножки I/O есть мультиплексор с 16 входами альтернативных функций (от AF0 до AF15), одну из которых можно сконфигуировать через регистры GPIOx_AFRL (для разрядов ножек портов 0 .. 7) и GPIOx_AFRH (для разрядов ножек портов 8 .. 15):

• После сброса все ножки I/O подключены к системной альтернативной функции 0 (AF0), SYS.
• Альтернативные функции периферийных устройств отображаются от AF1 до AF13.
• Cortex®-M4 с FPU EVENTOUT отображается на AF15.

Эта структура показана далее на рисунках 26 и 27.

В дополнение к этой гибкой архитектуре мультиплексирования I/O, каждое периферийное устройство имеет свои альтернативные функции, отображенные на различные ножки I/O, чтобы оптимизировать количество периферийных устройств, доступных в корпусах с меньшим количеством выводов.

Для использования I/O в определенной конфигурации выполните следующие действия:

• Системная функция (SYS). Подключите ножку I/O к AF0 и сконфигурируйте её в зависимости от используемой функции:

– JTAG/SWD, после каждого сброса эти выводы назначаются как выделенные для функции отладки, и могут использоваться хостом отладки (ножка не управляется контроллером GPIO).
– RTC_REFIN: этот вывод должен быть сконфигурирован в режиме входа с высоким сопротивлением (input floating mode).
– MCO1 и MCO2: эти выводы должны быть сконфигурированы в режиме альтернативной функции.

Примечание: пользователь может запретить некоторые или все ножки JTAG/SWD, и таким образом освободить их для использования как GPIO (освобожденные выводы подсвечены серым в таблице 36).

Для дополнительной информации см. секции Section 7.2.10: Clock-out capability и Section 6.2.10: Clock-out capability даташита [1].

Таблица 36. Гибкое назначение выводов отладчика SWJ-DP. "Освобождено" - означает, что эти ножки не используются для функций отладки и могту быть задействованы как порты GPIO.

Доступные порты отладки
Назначение ножек SWJ I/O
PA13/
JTMS/
SWDIO
PA14/
JTCK/
SWCLK
PA15/
JTDI
PB3/
JTDO
PB4/
NJTRST
Полный SWJ (JTAG-DP + SW-DP) - состояние сброса x x x x x
Полный SWJ (JTAG-DP + SW-DP), но без NJTRST x x x x Освоб.
JTAG-DP запрещен и SW-DP разрешен x x Освобождено
Запрещены и JTAG-DP, и SW-DP Освобождено

• GPIO. Регистром GPIOx_MODER нужная ножка I/O конфигурируется как вход или выход.

• AF (альтернативная функция периферийного устройства). Для ADC и DAC сконфигурируйте нужную ножку I/O как аналоговую с помощью регистра GPIOx_MODER.

Для других периферийных устройств:

– Сконфигурируйте нужную ножку I/O в качестве альтернативной функции с помощью регистра GPIOx_MODER.
– Выберите тип, pull-up/pull-down и скорость переключения выхода соответственно регистрами GPIOx_OTYPER, GPIOx_PUPDR и GPIOx_OSPEEDR.
– Соедините I/O с нужной функцией AFx в регистре GPIOx_AFRL или GPIOx_AFRH.

• EVENTOUT. Сконфигурируйте ножку I/O для вывода Cortex®-M4 сигнала FPU EVENTOUT, путем подключения его к AF15.

Примечание: EVENTOUT не отображается на следующие порты I/O: PC13, PC14, PC15, PH0, PH1 и PI8.

См. таблицу отображения альтернативных функций (Alternate function mapping) в даташите на определенную модель микроконтроллера, где подробно описано отображение каждой ножки порта на альтернативную функцию. Для микроконтроллера STM32F407 таблица альтернативных функций приведена в статье [2], для STM32F429 таблица альтернативных функций приведена в этой статье.

Для ножек от 0 до 7 регистр GPIOx_AFRL[31:0] выбирает выделенную альтернативную функцию:

STM32F4xx AFRL 405 407 415 417 fig26a

Для ножек от 8 до 15 регистр GPIOx_AFRH[31:0] выбирает выделенную альтернативную функцию:

STM32F4xx AFRH 405 407 415 417 fig26b

Рис. 26. Выбор альтернативной функции на микроконтроллерах STM32F405xx/07xx и STM32F415xx/17xx.

Примечание (1): сконфигурировано в FS.

Для ножек от 0 до 7 регистр GPIOx_AFRL[31:0] выбирает выделенную альтернативную функцию:

STM32F4xx AFRL 42x 43x fig27a

Для ножек от 8 до 15 регистр GPIOx_AFRH[31:0] выбирает выделенную альтернативную функцию:

STM32F4xx AFRH 42x 43x fig27b

Рис. 27. Выбор альтернативной функции на микроконтроллерах STM32F42xxx и STM32F43xxx.

Примечание (1): сконфигурировано в FS.

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

Регистр GPIOx_MODER используется для выбора направления I/O (ввод, вывод, AF, аналоговая функция). Регистры GPIOx_OTYPER и GPIOx_OSPEEDR используются для выбора типа выхода (push-pull или open-drain) и его скорости переключения (ножки скорости I/O непосредственно подключены к соответствующему регистру GPIOx_OSPEEDR, независимо от направления I/O). Регистр GPIOx_PUPDR используется для выбора подтяжки pull-up/pull-down независимо от направления I/O.

Регистры данных порта I/O. У каждого GPIO есть два 16-битных отображенных на память регистра: регистры входных и выходных данных (GPIOx_IDR и GPIOx_ODR). В GPIOx_ODR сохраняются данные для вывода, он доступен для чтения и записи. Входные данные порта I/O сохраняются в регистре данных входа (GPIOx_IDR), это регистр только для чтения.

Подробное описание регистров данных см. в секции 8.4.5: GPIO port input data register (GPIOx_IDR) (x = A..I/J/K) и секции 8.4.6: GPIO port output data register (GPIOx_ODR) (x = A..I/J/K) даташита [1].

Манипуляция разрядами данных I/O. Регистр установки/сброса бита (GPIOx_BSRR) это 32-битный регистр, позволяющий программе атомарно установить и сбросить отдельный бит в регистре выходных данных (GPIOx_ODR). У регистра установки/сброса GPIOx_BSRR бит в 2 раза больше, чем у регистра выходных данных GPIOx_ODR.

Для каждого бита в GPIOx_ODR соответствуют 2 бита управления в регистре GPIOx_BSRR: BSRR(i) и BSRR(i+SIZE). Когда в бит BSRR(i) записана 1, установится соответствующий бит ODR(i). Когда в бит BSRR(i+SIZE) записана 1, сбросится соответствующий бит ODR(i).

Запись 0 в любой бит регистра GPIOx_BSRR не оказывает никакого влияния на соответствующий бит GPIOx_ODR. Если сделана попытка одновременных установки и сброса бита через регистр GPIOx_BSRR, то действие установки имеет приоритет.

Использование регистра GPIOx_BSRR для изменения значений отдельных бит в GPIOx_ODR работает как "одиночный выстрел", который не блокирует биты GPIOx_ODR. К битам GPIOx_ODR всегда можно обращаться непосредственно. Регистр GPIOx_BSRR предоставляет способ атомарного побитного управления выходными разрядами порта. Таким образом, от программы не требуется запрещать прерывания, когда программируется GPIOx_ODR на уровне бит: есть возможность модифицировать один или большее количество бит за один атомарный доступ на запись по шине AHB1.

Механизм блокировки GPIO. Есть возможность заморозить регистры управления GPIO с помощью выполнения специальной последовательности записи для регистра GPIOx_LCKR. Замораживаются регистры GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR, GPIOx_PUPDR, GPIOx_AFRL и GPIOx_AFRH.

Для записи в GPIOx_LCKR применяется специальная последовательность записи/чтения. Когда правильная последовательность блокировки (LOCK sequence) применена для бита 16 в этом регистре, значение LCKR[15:0] используется для блокировки конфигурации ножек I/O (во время последовательности записи значение LCKR[15:0] должно быть одинаковыми). Когда LOCK sequence применена к биту порта, значение бита порта не может быть модифицировано до следующего сброса MCU или периферии. Каждый бит GPIOx_LCKR freezes the corresponding bit in the control registers (GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR, GPIOx_PUPDR, GPIOx_AFRL and GPIOx_AFRH).

LOCK sequence может быть выполнена только доступом к регистру GPIOx_LCKR с использованием 32-битных слов, потому что бит 16 регистра GPIOx_LCKR должен быть установлен одновременно с битами [15:0].

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

AF (альтернативная функция I/O). Предоставлены 2 регистра для выбора одной из 16 альтернативных функций входа/выхода для каждой ножки I/O. С помощью этих регистров Вы можете подсоединить альтернативную функцию к какой-то другой ножке микроконтроллера, как того требует Ваше приложение.

Это значит, что определенное количество возможных функций периферийных устройств мультиплексируется на каждую ножку GPIO с помощью программирования регистров альтернативных функций GPIOx_AFRL и GPIOx_AFRH. Таким образом, приложение может выбрать одну из возможных функций (AF) для каждой ножки I/O. Сигнал выбора AF общий для альтернативной функции входа и альтернативной функции выхода, один канал выбирается для альтернативной функции ввода/вывода одной ножки I/O.

Чтобы узнать, какие функции мультиплексируются на каком выводе GPIO, см. в даташите на конкретный микроконтроллер таблицу "Alternate function mapping". Для микроконтроллера STM32F407 таблица альтернативных функций приведена в статье [2], для STM32F429 таблица альтернативных функций приведена в этой статье.

Примечание: в любой момент времени для каждой ножки I/O может быть выбрана только одна из альтернативных функций.

Линии сигналов внешнего прерывания/пробуждения. У всех портов есть возможность подачи сигнала внешнего прерывания (external interrupt). Для использования этой функции ножка порта должна быть сконфигурирована в режим входа, см. секции 12.2: External interrupt/event controller (EXTI) и 12.2.3: Wakeup event management в даташите [1].

Конфигурация ввода. Когда порт I/O запрограммирован как вход:

• Выходной буфер запрещен.
• Активирован триггер Шмидта по входу.
• В зависимости от записанного значения в регистр GPIOx_PUPDR могут быть активированы верхние (pull-up) и/или нижние (pull-down) резисторы.
• Данные, присутствующие на выводе I/O защелкиваются в регистр входных данных на каждом такте AHB1.
• Доступ на чтение регистра входных данных показывает состояние портов I/O.

Рис. 28 показывает входную конфигурацию бита порта I/O.

STM32F4xx pin Input floating pullup pulldown configurations fig28

Рис. 28. Конфигурации входа для режимов floating, pull-up и pull-down.

Конфигурация вывода. Когда порт I/O запрограммирован как выход:

• Выходной буфер разрешен:

– Режим открытого стока (open-drain): записанный лог. 0 в регистр выходных данных активирует (открывает) нижнее плечо драйвера N-MOS, в то время как записанная лог. 1 переводит ножку порта в отключенное состояние Hi-Z (верхнее плечо драйвера P-MOS никогда не активируется).
– Режим двухтактного выхода (push-pull): записанный лог. 0 в регистр выходных данных активирует (открывает) нижнее плечо драйвера N-MOS, верхнее плечо драйвера P-MOS выключается. Записанная лог. 1 в регистр выходных данных отключает нижнее плечо N-MOS и открывает верхнее плечо P-MOS, на выходе появляется лог. 1.

• Активируется входной триггер Шмидта.

• Активированы ли слабые резисторы подтяжки (weak pull-up и pull-down), или нет, зависит от значения в регистре GPIOx_PUPDR.

• Данные, присутствующие на ножке I/O, защелкиваются в регистр входных данных на каждом такте AHB1.

• Доступ на чтение регистра входных данных показывает состояние портов I/O.

• Доступ на чтение в регистра выходных данных покажет последнее записанное в него значение.

Рис. 29 показывает выходную конфигурацию бита порта I/O.

STM32F4xx pin Output configuration fig29

Рис. 29. Конфигурация выхода.

Конфигурация AF. Когда на ножку I/O запрограммирована альтернативная функция (AF):

• Выходной буфер может быть сконфигурирован либо как открытый сток (open-drain), либо как двухтактный буфер (push-pull).

• На выходной буфер поступает сигнал от периферийного устройства (разрешение передатчика и данные от него).

• Активируется входной триггер Шмидта.

• Активированы ли слабые резисторы подтяжки (weak pull-up и pull-down), или нет, зависит от значения в регистре GPIOx_PUPDR.

• Данные, присутствующие на ножке I/O, защелкиваются в регистр входных данных на каждом такте AHB1.

• Доступ на чтение регистра входных данных показывает состояние портов I/O.

Рис. 30 показывает конфигурацию альтернативной функции бита порта I/O.

STM32F4xx pin Alternate function configuration fig30

Рис. 30. Конфигурация альтернативной функции (AF).

Аналоговая конфигурация. Когда ножка порта I/O запрограммирована в analog-режиме:

• Выходной буфер запрещен.

• Триггер Шмидта на входе деактивирован, обеспечивая нулевое потребление тока для каждого аналогового значения на ножке I/O. Выход триггера Шмидта получает постоянное нулевое значение.

• Слабые резисторы подтяжки (weak pull-up и weak pull-down) запрещены.

• Доступ на чтение в регистру входных данных даст значение "0".

Примечание: в analog-конфигурации выводы I/O теряют способность принимать по входу уровень 5V (они не являются 5V tolerant).

На рис. 31 показана высокоомная, аналоговая конфигурация входа для бита порта I/O.

STM32F4xx pin High impedance analog configuration fig31

Рис. 31. Hi-Z analog-конфигурация.

OSC32_IN/OSC32_OUT как GPIO. Выводы LSE-генератора OSC32_IN и OSC32_OUT могут использоваться как ножки портов I/O общего назначения, PC14 и PC15 соответственно, когда LSE-генератор выключен. Ножки портов PC14 и PC15 конфигурируются как внешние выводы OSC32_IN и OSC32_OUT только когда LSE-генератор включен. Включение генератора LSE осуществляется установкой бита LSEON в регистре RCC_BDCR. Бит LSE имеет приоритет над функцией GPIO.

Примечание: функционал PC14/PC15 GPIO теряется, когда домен питания 1.2V выключен (когда микроконтроллер входит в режим standby), или когда предоставлен домен питания VBAT (VDD больше не предоставляется). В этом случае I/O установлены в режима аналогового входа.

OSC_IN/OSC_OUT как GPIO. Выводы HSE-генератора OSC_IN и OSC_OUT могут использоваться как ножки портов I/O общего назначения, PH0 и PH1 соответственно, когда HSE-генератор выключен (после сброса HSE-генератор выключен). Ножки портов PH0/PH1 конфигурируются как выводы HSE-генератора OSC_IN/OSC_OUT только когда HSE-генератор включен. Включение HSE-генератора осуществляется установкой бита HSEON в регистре RCC_CR. Функция HSE имеет приоритет над функцией GPIO.

Выбор альтернативных функций RTC_AF1 и RTC_AF2. Микроконтроллер STM32F4xx имеет два вывода GPIO RTC_AF1 и RTC_AF2, которые могут использоваться для детектирования события взлома/вмешательства (tamper event) или события метки времени (time stamp event), или как выходы RTC_ALARM или RTC_CALIB часов реального времени (Real Time Clock, RTC).

RTC_AF1 (PC13) может использоваться для следующих целей:

• Выход RTC_ALARM: этот выход может быть сигналом RTC Alarm A, RTC Alarm B или RTC Wakeup, в зависимости от бит OSEL[1:0] в регистре RTC_CR.
• Выход RTC_CALIB: эта функция разрешается установкой бита COE[23] в регистре RTC_CR.
• RTC_TAMP1: детектирование события взлома (tamper event).
• RTC_TS: детектирование события метки времени (time stamp event).

RTC_AF2 (PI8) может использоваться для следующих целей:

• RTC_TAMP1: детектирование события взлома.
• RTC_TAMP2: детектирование события взлома.
• RTC_TS: детектирование события метки времени.

Выбор соответствующей ножки выполняется через регистр RTC_TAFCR следующим образом:

• TAMP1INSEL используется для выбора, какая ножка используется как вход RTC_TAMP1 tamper.
• TSINSEL используется для выбора, какая ножка используется как вход RTC_TS time stamp.
• ALARMOUTTYPE используется для выбора, как работает выход RTC_ALARM - в двухтактном режиме (push-pull) или как открытый стоком (open-drain).

Механизм выхода следует порядку приоритета, перечисленному в таблицах 37 и 38.

Таблица 37. Ножка RTC_AF1(1).

Конфигурация
и функция ножки
RTC_ALARM
разрешено
RTC_CALIB
разрешено
Tamper
разрешено
Time stamp
разрешено
Выбор ножки
TAMP1INSEL
TAMPER1
Выбор ножки
TSINSEL
TIMESTAMP
Конфигурация
ALARMOUTTYPE
RTC_ALARM
Выход Alarm, OD 1 Не имеет значения Не имеет значения Не имеет значения Не имеет значения Не имеет значения 0
Выход Alarm, PP 1 Не имеет значения Не имеет значения Не имеет значения Не имеет значения Не имеет значения 1
Выход Calibration, ЗЗ 0 1 Не имеет значения Не имеет значения Не имеет значения Не имеет значения Не имеет значения
Плавающий вход TAMPER1 0 0 1 0 0 Не имеет значения Не имеет значения
Плавающий вход TIMESTAMP и TAMPER1 0 0 1 1 0 0 Не имеет значения
Плавающий вход TIMESTAMP 0 0 0 1 Не имеет значения 0 Не имеет значения
Стандартный GPIO 0 0 0 0 Не имеет значения Не имеет значения Не имеет значения

Примечание (1): OD означает open-drain (открытый сток), PP push-pull (двухтактный драйвер).

Таблица 38. Ножка RTC_AF2.

Конфигурация
и функция ножки
Tamper
разрешено
Time stamp
разрешено
Выбор ножки
TAMP1INSEL
TAMPER1
Выбор ножки
TSINSEL
TIMESTAMP
Конфигурация
ALARMOUTTYPE
RTC_ALARM
Плавающий вход TAMPER1 1 0 1 Не имеет значения Не имеет значения
Плавающий вход TIMESTAMP и TAMPER1 1 1 1 1 Не имеет значения
Плавающий вход TIMESTAMP 0 1 Не имеет значения 1 Не имеет значения
Стандартный GPIO 0 0 Не имеет значения Не имеет значения Не имеет значения

[Регистры GPIO]

В этой секции приведено подробное описание регистров GPIO. Обзорное описание регистров и их бит, вместе с адресами смещения и значениями бит после сброса приведено в таблице 39.

К регистрам GPIO можно обращаться как к байтам (8 бит), половинкам слов (16 бит) или полным словам (32 бита).

В именах регистра x соответствует одной из букв A..I/J/K. Смещения адреса регистра указаны относительно абсолютного адреса, зависящего от буквы. Например, для микроконтроллера STM32F429 эти адреса следующие (данные взяты из заголовочного файла stm32f429xx.h библиотеки CMSIS):

#define GPIOA_BASE (AHB1PERIPH_BASE + 0x0000UL)
#define GPIOB_BASE (AHB1PERIPH_BASE + 0x0400UL)
#define GPIOC_BASE (AHB1PERIPH_BASE + 0x0800UL)
#define GPIOD_BASE (AHB1PERIPH_BASE + 0x0C00UL)
#define GPIOE_BASE (AHB1PERIPH_BASE + 0x1000UL)
#define GPIOF_BASE (AHB1PERIPH_BASE + 0x1400UL)
#define GPIOG_BASE (AHB1PERIPH_BASE + 0x1800UL)
#define GPIOH_BASE (AHB1PERIPH_BASE + 0x1C00UL)
#define GPIOI_BASE (AHB1PERIPH_BASE + 0x2000UL)
#define GPIOJ_BASE (AHB1PERIPH_BASE + 0x2400UL)
#define GPIOK_BASE (AHB1PERIPH_BASE + 0x2800UL)

Здесь константа AHB1PERIPH_BASE равна адресу (PERIPH_BASE + 0x00020000UL), или 0x40020000.

В описании функций регистров используются следующие сокращения:

read/write (rw) Программа может читать и записывать эти биты.

read-only (r) Программа может только читать эти биты.

write-only (w) Программа может только записывать в этот бит. Чтение бита вернет значение сброса.

Reserved (Res.) Зарезервированный бит, его значение должно сохраняться на значении сброса.

Смещение адреса: 0x00

Значения сброса:

• 0xA8000000 для порта A
• 0x00000280 для порта B
• 0x00000000 для других портов

   31      30       29       28       27       26       25       24       23       22       21       20       19       18       17       16   
MODER15[1:0]
rw

MODER14[1:0]
rw

MODER13[1:0]
rw

MODER12[1:0]
rw

MODER11[1:0]
rw
MODER10[1:0]
rw
MODER9[1:0]
rw
MODER8[1:0]
rw
   15       14       13       12       11       10       9       8       7       6       5       4       3       2       1       0   
MODER7[1:0]
rw

MODER6[1:0]
rw
MODER5[1:0]
rw
MODER4[1:0]
rw
MODER3[1:0]
rw

MODER2[1:0]
rw

MODER1[1:0]
rw

MODER0[1:0]
rw

MODERy[1:0]: конфигурация бит порта x (y = 0..15). Эти биты записываются программой, чтобы сконфигурировать режим работы I/O.

00: вход (обычное состояние после сброса по умолчанию)
01: режим вывода общего назначения
10: режим альтернативной функции
11: аналоговый режим

Смещение адреса: 0x04
Значение сброса: 0x00000000

   31      30       29       28       27       26       25       24       23       22       21       20       19       18       17       16   
зарезервировано
   15       14       13       12       11       10       9       8       7       6       5       4       3       2       1       0   
OT15
rw

OT14
rw
OT13
rw
OT12
rw
OT11
rw
OT10
rw
OT9
rw
OT8
rw
OT7
rw

OT6
rw
OT5
rw

OT4
rw
OT3
rw

OT2
rw
OT1
rw

OT0
rw

Биты 31:16 зарезервированы, и должны удерживаться в состоянии сброса (все нули).

OTy (биты 15:0): биты конфигурации порта x (y = 0..15). Эти биты записываются программой, чтобы сконфигурировать тип выхода порта I/O.

0: двухтактный выход, push-pull (состояние по умолчанию после сброса)
1: выход с открытым стоком, open-drain

Смещение адреса: 0x08

Значения сброса:

• 0x0C000000 для порта A
• 0x000000C0 для порта B
• 0x00000000 для других портов

   31      30       29       28       27       26       25       24       23       22       21       20       19       18       17       16   
OSPEEDR15[1:0]
rw

OSPEEDR14[1:0]
rw

OSPEEDR13[1:0]
rw

OSPEEDR12[1:0]
rw

OSPEED11[1:0]
rw
OSPEED10[1:0]
rw
OSPEED9[1:0]
rw
OSPEED8[1:0]
rw
   15       14       13       12       11       10       9       8       7       6       5       4       3       2       1       0   
OSPEED7[1:0]
rw

OSPEED6[1:0]
rw
OSPEED5[1:0]
rw
OSPEED4[1:0]
rw
OSPEED3[1:0]
rw

OSPEED2[1:0]
rw

OSPEED1[1:0]
rw

OSPEED0[1:0]
rw

OSPEEDRy[1:0]: биты конфигурации порта x (y = 0..15). Эти биты записываются программой, чтобы сконфигурировать скорость переключения выхода.

00: низкая скорость
01: средняя скорость
10: высокая скорость
11: очень высокая скорость

Примечание: см. в даташите на используемый микроконтроллер значения бит OSPEEDRy в зависимости от диапазона напряжений питания VDD и внешней нагрузки.

Смещение адреса: 0x0C

Значения сброса:

• 0x64000000 для порта A
• 0x00000100 для порта B
• 0x00000000 для других портов

   31      30       29       28       27       26       25       24       23       22       21       20       19       18       17       16   
PUPDR15[1:0]
rw

PUPDR14 [1:0]
rw

PUPDR13 [1:0]
rw

PUPDR12 [1:0]
rw

PUPDR11[1:0]
rw
PUPDR10[1:0]
rw
PUPDR9[1:0]
rw
PUPDR8[1:0]
rw
   15       14       13       12       11       10       9       8       7       6       5       4       3       2       1       0   
PUPDR7[1:0]
rw

PUPDR6[1:0]
rw
PUPDR5[1:0]
rw
PUPDR4[1:0]
rw
PUPDR3[1:0]
rw

PUPDR2[1:0]
rw

PUPDR1[1:0]
rw

PUPDR0[1:0]
rw

PUPDRy[1:0]: биты конфигурации порта x (y = 0..15). Эти биты записываются программой, чтобы сконфигурировать верхние (pull-up) или нижние (pull-down) подтягивающие резисторы.

00: подтягивающие резисторы отключены
01: pull-up
10: pull-down
11: зарезервировано

Смещение адреса: 0x10
Значение сброса: 0x0000XXXX (здесь X означает, что значение не определено)

   31      30       29       28       27       26       25       24       23       22       21       20       19       18       17       16   
зарезервировано
   15       14       13       12       11       10       9       8       7       6       5       4       3       2       1       0   
IDR15
r

IDR14
r
IDR13
r
IDR12
r
IDR11
r
IDR10
r
IDR9
r
IDR8
r
IDR7
r

IDR6
r
IDR5
r

IDR4
r
IDR3
r

IDR2
r
IDR1
r

IDR0
r

Биты 31:16 зарезервированы, и должны удерживаться в состоянии сброса (все нули).

IDRy (биты 15:0): входные данные порта (y = 0..15). Эти биты работают только на чтение, и к ним можно осуществлять доступ только как к слову (32 бита). Прочитанное слово содержит входное значение соответствующего порта I/O.

Смещение адреса: 0x14
Значение сброса: 0x00000000

   31      30       29       28       27       26       25       24       23       22       21       20       19       18       17       16   
зарезервировано
   15       14       13       12       11       10       9       8       7       6       5       4       3       2       1       0   
ODR15
rw

ODR14
rw
ODR13
rw
ODR12
rw
ODR11
rw
ODR10
rw
ODR9
rw
ODR8
rw
ODR7
rw

ODR6
rw
ODR5
rw

ODR4
rw
ODR3
rw

ODR2
rw
ODR1
rw

ODR0
rw

Биты 31:16 зарезервированы, и должны удерживаться в состоянии сброса (все нули).

ODRy (биты 15:0): выходные данные порта (y = 0..15). Эти биты можно считывать и записывать программно.

Примечание: для атомарного сброса и установки бит можно использовать регистр GPIOx_BSRR (x = A..I/J/K).

Смещение адреса: 0x18
Значение сброса: 0x00000000

   31      30       29       28       27       26       25       24       23       22       21       20       19       18       17       16   
BR15
w
BR14
w
BR13
w
BR12
w
BR11
w
BR10
w
BR9
w
BR8
w
BR7
w
BR6
w
BR5
w
BR4
w
BR3
w
BR2
w
BR1
w
BR0
w
   15       14       13       12       11       10       9       8       7       6       5       4       3       2       1       0   
BS15
w

BS14
w
BS13
w
BS12
w
BS11
w
BS10
w
BS9
w
BS8
w
BS7
w

BS6
w
BS5
w

BS4
w
BS3
w

BS2
w
BS1
w

BS0
w

BRy (биты 31:16): биты для сброса разрядов y порта x (y = 0..15). Эти биты работают только на запись, и к ним можно осуществлять доступ как к полному слову (32 бита), половине слова (16 бит) или байту (8 бит). Чтение этих бит возвратит значение 0x0000.

0: никакого влияния на соответствующий бит ODRx
1: сбросит соответствующий бит ODRx

Примечание: если в одной операции одновременно установлены конкурирующие биты BSx и BRx, то бит BSx имеет приоритет.

BSy (биты 15:0): биты для установки разрядов y порта x (y = 0..15). Эти биты работают только на запись, и к ним можно осуществлять доступ как к полному слову (32 бита), половине слова (16 бит) или байту (8 бит). Чтение этих бит возвратит значение 0x0000.

0: никакого влияния на соответствующий бит ODRx
1: установит соответствующий бит ODRx

Этот регистр используется для блокировки конфигурации бит порта, когда применена корректная последовательность записи к биту 16 (LCKK). Значение бит [15:0] используется для блокировки конфигурации GPIO. Во время последовательности записи значение LCKR[15:0] не должно меняться. Когда последовательность блокировки (LOCK sequence) была применена к биту порта, значение этого бита больше не может быть изменено, пока не произойдет следующий сброс MCU или периферии.

Примечание: для записи в регистр GPIOx_LCKR используется специальная последовательность записи. Во время этой последовательности допускается доступ только к режиме полного слова (32 бита).

Каждая блокировка бита замораживает определенный регистр конфигурации (регистры управления и альтернативной функции).

Смещение адреса: 0x1C
Значение сброса: 0x00000000

   31      30       29       28       27       26       25       24       23       22       21       20       19       18       17       16   
зарезервировано
LCKK
rw
   15       14       13       12       11       10       9       8       7       6       5       4       3       2       1       0   
LCK15
rw

LCK14
rw
LCK13
rw
LCK12
rw
LCK11
rw
LCK10
rw
LCK9
rw
LCK8
rw
LCK7
rw

LCK6
rw
LCK5
rw

LCK4
rw
LCK3
rw

LCK2
rw
LCK1
rw

LCK0
rw

Возможен доступ на чтение и запись, но только 32-битный.

Биты 31:17 зарезервированы, и должны удерживаться в состоянии сброса (все нули).

LCKK (бит 16): LoCK Key, ключ блокировки. Этот бит может быть прочитан в любой момент времени. Изменен он может быть только специальной последовательностью блокировки (lock key write sequence).

0: блокировка конфигурации порта не активна
1: активна блокировка конфигурации порта. Регистр GPIOx_LCKR блокирован до момента, когда произойдет сброс MCU или сброс периферийного устройства.

LOCK key write sequence:

WR LCKR[16] = ‘1’ + LCKR[15:0]
WR LCKR[16] = ‘0’ + LCKR[15:0]
WR LCKR[16] = ‘1’ + LCKR[15:0]
RD LCKR
RD LCKR[16] = ‘1’ (эта операция чтения не обязательна, однако она подтвердит, что блокировка активна).

Примечание: во время операции LOCK key write sequence, значение LCK[15:0] не должно изменяться. Любая ошибка в последовательности записи оборвет (отменит) установку блокировки. После того, как выполнена первая последовательности блокировки любого бита порта любой доступ на чтение бита LCKK всегда возвратит 1, пока не произойдет следующий сброс микроконтроллера.

LCKy (биты 15:0): блокируемый бит y порта x (y= 0..15). Эти биты можно читать и записывать, однако они могут быть записаны только когда бит LCKK в состоянии лог. 0.

0: конфигурация порта не заблокирована
1: конфигурация порта заблокирована

Смещение адреса: 0x20
Значение сброса: 0x00000000

   31      30       29       28       27       26       25       24       23       22       21       20       19       18       17       16   
AFRL7[3:0]
rw
AFRL6[3:0]
rw
AFRL5[3:0]
rw
AFRL4[3:0]
rw
   15       14       13       12       11       10       9       8       7       6       5       4       3       2       1       0   
AFRL3[3:0]
rw
AFRL2[3:0]
rw
AFRL1[3:0]
rw
AFRL0[3:0]
rw

AFRLy (биты 31:0): выбор альтернативной функции для бита y порта x (y = 0..7). Эти биты записывает программа, чтобы сконфигурировать альтернативную функцию I/O.

Биты AFRLy выбирают:

0000: AF0      1000: AF8
0001: AF1      1001: AF9
0010: AF2      1010: AF10
0011: AF3      1011: AF11
0100: AF4      1100: AF12
0101: AF5      1101: AF13
0110: AF6      1110: AF14
0111: AF7      1111: AF15

Смещение адреса: 0x24
Значение сброса: 0x00000000

   31      30       29       28       27       26       25       24       23       22       21       20       19       18       17       16   
AFRH15[3:0]
rw
AFRH14[3:0]
rw
AFRH13[3:0]
rw
AFRH12[3:0]
rw
   15       14       13       12       11       10       9       8       7       6       5       4       3       2       1       0   
AFRH11[3:0]
rw
AFRH10[3:0]
rw
AFRH9[3:0]
rw
AFRH8[3:0]
rw

AFRHy (биты 31:0): выбор альтернативной функции для бита y порта x (y = 8..15). Эти биты записывает программа, чтобы сконфигурировать альтернативную функцию I/O.

Биты AFRLy выбирают:

0000: AF0      1000: AF8
0001: AF1      1001: AF9
0010: AF2      1010: AF10
0011: AF3      1011: AF11
0100: AF4      1100: AF12
0101: AF5      1101: AF13
0110: AF6      1110: AF14
0111: AF7      1111: AF15

[Таблицы альтернативных функций портов микроконтроллеров STM32F427xx, STM32F429xx]

По умолчанию (после сброса) все ножки портов GPIOx настроены на альтернативную функцию AF0. Таблицу всех альтернативных функций можно найти в даташите на микроконтроллер, она называется Alternate function mapping.

Внимание: у некоторых ножек портов могут быть дополнительные функции аналоговые функции АЦП, ЦАП, пробуждения (см. столбец Analog). Например, ножки портов PA4 и PA5 микроконтроллеров STM32F4xx выполняют дополнительные функции выходов ЦАП (DAC_OUT1 и DAC_OUT2).

Порт AF0 AF1 AF2 AF3 AF4 AF5 AF6 AF7
SYS TIM1/2 TIM3..5 TIM8..11 I2C3 SPI1 SPI3/SAI1 USART1..2
PA0   TIM2_CH1/
TIM2_ETR
TIM5_CH1 TIM8_ETR       USART2_CTS
PA1   TIM2_CH2 TIM5_CH2         USART2_RTS
PA2   TIM2_CH3 TIM5_CH3 TIM9_CH1       USART2_TX
PA3   TIM2_CH4 TIM5_CH4 TIM9_CH2       USART2_RX
PA4           SPI1_NSS SPI3_NSS/
I2S3_WS
USART2_CK
PA5   TIM2_CH1/
TIM2_ETR
  TIM8_CH1N   SPI1_SCK    
PA6   TIM1_BKIN TIM3_CH1 TIM8_BKIN   SPI1_MISO    
PA7   TIM1_CH1N TIM3_CH2 TIM8_CH1N   SPI1_MOSI    
PA8 MCO1 TIM1_CH1     I2C3_SCL     USART1_CK
PA9   TIM1_CH2     I2C3_SMBA     USART1_TX
PA10   TIM1_CH3           USART1_RX
PA11   TIM1_CH4           USART1_CTS
PA12   TIM1_ETR           USART1_RTS
PA13 JTMS-SWDIO              
PA14 JTCK-SWCLK              
PA15 JTDI TIM2_CH1/
TIM2_ETR
      SPI1_NSS SPI3_NSS/
I2S3_WS
 

Порт AF8 AF9 AF10 AF11 AF12 AF13 AF14 AF15 Analog
UART4 CAN1
TIM13..14
OTG_FS/
OTG_HS
ETH OTG_HS DCMI LCD SYS
PA0 UART4_TX     ETH_MII_CRS       EVENTOUT ADC123_IN0
WKUP(1)
PA1 UART4_RX     ETH_MII_RX_CLK
ETH_RMII_REF_CLK
      EVENTOUT ADC123_IN1
PA2       ETH_MDIO       EVENTOUT ADC123_IN2
PA3     OTG_HS_ULPI_D0 ETH _MII_COL     LCD_B5  EVENTOUT ADC123_IN3
PA4         OTG_HS_SOF DCMI_HSYNC LCD_VSYNC EVENTOUT ADC12_IN4
DAC_OUT1
PA5     OTG_HS_ULPI_CK         EVENTOUT ADC12_IN5
DAC_OUT2
PA6   TIM13_CH1       DCMI_PIXCK LCD_G2 EVENTOUT ADC12_IN6
PA7   TIM14_CH1   ETH_MII_RX_DV
ETH_RMII_CRS_DV
      EVENTOUT ADC12_IN7
PA8     OTG_FS_SOF       LCD_R6 EVENTOUT  
PA9           DCMI_D0   EVENTOUT  
PA10     OTG_FS_ID     DCMI_D1   EVENTOUT  
PA11   CAN1_RX OTG_FS_DM       LCD_R4 EVENTOUT  
PA12   CAN1_TX OTG_FS_DP       LCD_R5 EVENTOUT  
PA13               EVENTOUT  
PA14               EVENTOUT  
PA15               EVENTOUT  

Примечание (1): FT = 5V tolerant (входы допускают уровень 5V), за исключением случая, когда активен аналоговый режим или режим генератора (для PC14, PC15, PH0 и PH1).

Порт AF0 AF1 AF2 AF3 AF4 AF5 AF6 AF7
SYS TIM1/2 TIM3..4 TIM8/TIM10/TIM11 I2C1..2 SPI1/SPI2/
I2S2
SPI3/I2Sext/
I2S3
USART1/USART3/
I2S3ext
PB0   TIM1_CH2N TIM3_CH3 TIM8_CH2N        
PB1   TIM1_CH3N TIM3_CH4 TIM8_CH3N        
PB2 BOOT1              
PB3 JTDO/
TRACESWO
TIM2_CH2       SPI1_SCK SPI3_SCK
I2S3_CK
 
PB4 NJTRST   TIM3_CH1     SPI1_MISO SPI3_MISO I2S3ext_SD
PB5     TIM3_CH2   I2C1_SMBA SPI1_MOSI SPI3_MOSI
I2S3_SD
 
PB6     TIM4_CH1   I2C1_SCL     USART1_TX
PB7     TIM4_CH2   I2C1_SDA     USART1_RX
PB8     TIM4_CH3 TIM10_CH1 I2C1_SCL      
PB9     TIM4_CH4 TIM11_CH1 I2C1_SDA SPI2_NSS
I2S2_WS
   
PB10   TIM2_CH3     I2C2_SCL SPI2_SCK
I2S2_CK
  USART3_TX
PB11   TIM2_CH4     I2C2_SDA     USART3_RX
PB12   TIM1_BKIN     I2C2_SMBA SPI2_NSS
I2S2_WS
  USART3_CK
PB13   TIM1_CH1N       SPI2_SCK
I2S2_CK
  USART3_CTS
PB14   TIM1_CH2N   TIM8_CH2N   SPI2_MISO I2S2ext_SD USART3_RTS
PB15 RTC_REFIN TIM1_CH3N   TIM8_CH3N   SPI2_MOSI
I2S2_SD
   

Порт AF8 AF9 AF10 AF11 AF12 AF13 AF14 AF15 Analog
- CAN1/CAN2/
TIM12/LCD
OTG_HS ETH FMC/FSMC/
SDIO/
OTG_HS
DCMI LCD SYS
PB0   LCD_R3 OTG_HS_ULPI_D1 ETH_MII_RXD2       EVENTOUT ADC12_IN8
PB1   LCD_R6 OTG_HS_ULPI_D2 ETH_MII_RXD3       EVENTOUT ADC12_IN9
PB2               EVENTOUT  
PB3               EVENTOUT  
PB4               EVENTOUT  
PB5   CAN2_RX OTG_HS_ULPI_D7 ETH_PPS_OUT FMC_SDCKE1 DCMI_D10   EVENTOUT  
PB6   CAN2_TX     FMC_SDNE1 DCMI_D5   EVENTOUT  
PB7         FSMC_NL DCMI_VSYNC   EVENTOUT  
PB8   CAN1_RX   ETH_MII_TXD3 SDIO_D4 DCMI_D6 LCD_B6 EVENTOUT  
PB9   CAN1_TX     SDIO_D5 DCMI_D7 LCD_B7 EVENTOUT  
PB10     OTG_HS_ULPI_D3 ETH_MII_RX_ER     LCD_G4 EVENTOUT  
PB11     OTG_HS_ULPI_D4 ETH_MII_TX_EN
ETH_RMII_TX_EN
    LCD_G5 EVENTOUT  
PB12   CAN2_RX OTG_HS_ULPI_D5 ETH_MII_TXD0
ETH_RMII_TXD0
OTG_HS_ID     EVENTOUT  
PB13   CAN2_TX OTG_HS_ULPI_D6 ETH_MII_TXD1
ETH_RMII_TXD1
      EVENTOUT  
PB14   TIM12_CH1     OTG_HS_DM     EVENTOUT  
PB15   TIM12_CH2     OTG_HS_DP     EVENTOUT  

Примечание: ножка корпуса порта PB2 совмещена с функцией BOOT1, выбирающей вместе с функцией вывода BOOT0 режим загрузки. Уровень на BOOT1 имеет значение только когда на BOOT0 уровень лог. 1.

Порт AF0 AF1
AF2 AF3 AF4 AF5 AF6 AF7
SYS TIM3 TIM8 I2C3 SPI2/I2S/
I2S2/I2S3ext
SPI3/I2Sext/
I2S3
USART3
PC0                
PC1                
PC2           SPI2_MISO I2S2ext_SD  
PC3           SPI2_MOSI
I2S2_SD
   
PC4                
PC5                
PC6     TIM3_CH1 TIM8_CH1   I2S2_MCK    
PC7     TIM3_CH2 TIM8_CH2     I2S3_MCK  
PC8     TIM3_CH3 TIM8_CH3        
PC9 MCO2   TIM3_CH4 TIM8_CH4 I2C3_SDA I2S_CKIN    
PC10             SPI3_SCK
I2S3_CK
USART3_TX
PC11           I2S3ext_SD SPI3_MISO USART3_RX
PC12             SPI3_MOSI
I2S3_SD
USART3_CK
PC13                
PC14                
PC15                

Порт AF8 AF9
AF10 AF11 AF12 AF13 AF14 AF15 Analog
UART4/5/
USART6
OTG_HS ETH FMC/SDIO DCMI LCD SYS
PC0     OTG_HS_ULPI_STP   FMC_SDNWE     EVENTOUT ADC123_IN10
PC1       ETH_MDC       EVENTOUT ADC123_IN11
PC2     OTG_HS_ULPI_DIR ETH_MII_TXD2 FMC_SDNE0     EVENTOUT ADC123_IN12
PC3     OTG_HS_ULPI_NXT ETH_MII_TX_CLK FMC_SDCKE0     EVENTOUT ADC123_IN13
PC4       ETH_MII_RXD0
ETH_RMII_RXD0
      EVENTOUT ADC12_IN14
PC5       ETH_MII_RXD1
ETH_RMII_RXD1
      EVENTOUT ADC12_IN15
PC6 USART6_TX       SDIO_D6 DCMI_D0 LCD_HSYNC EVENTOUT  
PC7 USART6_RX       SDIO_D7 DCMI_D1 LCD_G6 EVENTOUT  
PC8 USART6_CK       SDIO_D0 DCMI_D2   EVENTOUT  
PC9         SDIO_D1 DCMI_D3   EVENTOUT  
PC10 UART4_TX       SDIO_D2 DCMI_D8 LCD_R2 EVENTOUT  
PC11 UART4_RX       SDIO_D3 DCMI_D4   EVENTOUT  
PC12 UART5_TX       SDIO_CK DCMI_D9   EVENTOUT  
PC13               EVENTOUT  
PC14               EVENTOUT  
PC15               EVENTOUT  

Порт AF0
AF1
AF2 AF3
AF4
AF5 AF6 AF7
TIM3/TIM4 SPI2/SPI3 SAI1 USART2/USART3
PD0                
PD1                
PD2     TIM3_ETR          
PD3           SPI2_SCK
I2S2_CK
  USART2_CTS
PD4               USART2_RTS
PD5               USART2_TX
PD6           SPI3_MOSI
I2S3_SD
SAI1_SD_A USART2_RX
PD7               USART2_CK
PD8               USART3_TX
PD9               USART3_RX
PD10               USART3_CK
PD11               USART3_CTS
PD12     TIM4_CH1         USART3_RTS
PD13     TIM4_CH2          
PD14     TIM4_CH3          
PD15     TIM4_CH4          

Порт AF8 AF9 AF10
AF11
AF12 AF13 AF14 AF15
UART5 CAN1 FSMC/SDIO DCMI LCD SYS
PD0   CAN1_RX     FSMC_D2     EVENTOUT
PD1   CAN1_TX     FSMC_D3     EVENTOUT
PD2 UART5_RX       SDIO_CMD DCMI_D11   EVENTOUT
PD3         FSMC_CLK DCMI_D5 LCD_G7 EVENTOUT
PD4         FSMC_NOE     EVENTOUT
PD5         FSMC_NWE     EVENTOUT
PD6         FSMC_NWAIT DCMI_D10 LCD_B2 EVENTOUT
PD7         FSMC_NE1
FSMC_NCE2
    EVENTOUT
PD8         FSMC_D13     EVENTOUT
PD9         FSMC_D14     EVENTOUT
PD10         FSMC_D15   LCD_B3 EVENTOUT
PD11         FSMC_A16     EVENTOUT
PD12         FSMC_A17     EVENTOUT
PD13         FSMC_A18     EVENTOUT
PD14         FSMC_D0     EVENTOUT
PD15         FSMC_D1     EVENTOUT

Порт AF0 AF1 AF2 AF3 AF4
AF5 AF6 AF7
SYS TIM1 TIM4 TIM9 SPI4 SAI1
PE0     TIM4_ETR          
PE1                
PE2 TRACECLK         SPI4_SCK SAI1_MCLK_A  
PE3 TRACED0           SAI1_SD_B  
PE4 TRACED1         SPI4_NSS SAI1_FS_A  
PE5 TRACED2     TIM9_CH1   SPI4_MISO SAI1_SCK_A  
PE6 TRACED3     TIM9_CH2   SPI4_MOSI SAI1_SD_A  
PE7   TIM1_ETR            
PE8   TIM1_CH1N            
PE9   TIM1_CH1            
PE10   TIM1_CH2N            
PE11   TIM1_CH2       SPI4_NSS    
PE12   TIM1_CH3N       SPI4_SCK    
PE13   TIM1_CH3       SPI4_MISO    
PE14   TIM1_CH4       SPI4_MOSI    
PE15   TIM1_BKIN            

Порт AF8 AF9
AF10
AF11 AF12 AF13 AF14 AF15
UART7/
UART8
ETH FMC DCMI SYS
PE0 UART8_Rx       FMC_NBL0 DCMI_D2   EVENTOUT
PE1 UART8_Tx       FMC_NBL1 DCMI_D3   EVENTOUT
PE2       ETH_MII_TXD3 FMC_A23     EVENTOUT
PE3         FMC_A19     EVENTOUT
PE4         FMC_A20 DCMI_D4   EVENTOUT
PE5         FMC_A21 DCMI_D6   EVENTOUT
PE6         FMC_A22 DCMI_D7   EVENTOUT
PE7 UART7_Rx       FMC_D4     EVENTOUT
PE8 UART7_Tx       FMC_D5     EVENTOUT
PE9         FMC_D6     EVENTOUT
PE10         FMC_D7     EVENTOUT
PE11         FMC_D8   LCD_G3 EVENTOUT
PE12         FMC_D9   LCD_B4 EVENTOUT
PE13         FMC_D10   LCD_DE EVENTOUT
PE14         FMC_D11   LCD_CLK EVENTOUT
PE15         FMC_D12   LCD_R7 EVENTOUT

Порт AF0
AF1
AF2
AF3 AF4 AF5 AF6 AF7
Analog
TIM10/TIM11 I2C2 SPI5 SAI1
PF0         I2C2_SDA        
PF1         I2C2_SCL        
PF2         I2C2_SMBA        
PF3                 ADC3_IN9
PF4                 ADC3_IN14
PF5                 ADC3_IN15
PF6       TIM10_CH1   SPI5_NSS SAI1_SD_B   ADC3_IN4
PF7       TIM11_CH1   SPI5_SCK SAI1_MCLK_B   ADC3_IN5
PF8           SPI5_MISO SAI1_SCK_B   ADC3_IN6
PF9           SPI5_MOSI SAI1_FS_B   ADC3_IN7
PF10                 ADC3_IN8
PF11           SPI5_MOSI      
PF12                  
PF13                  
PF14                  
PF15                  

Порт AF8
AF9 AF10
AF11
AF12 AF13 AF14 AF15
TIM13/TIM14 FMC DCMI LCD SYS
PF0         FMC_A0     EVENTOUT
PF1         FMC_A1     EVENTOUT
PF2         FMC_A2     EVENTOUT
PF3         FMC_A3     EVENTOUT
PF4         FMC_A4     EVENTOUT
PF5         FMC_A5     EVENTOUT
PF6 UART7_Rx       FMC_NIORD     EVENTOUT
PF7 UART7_Tx       FMC_NREG     EVENTOUT
PF8   TIM13_CH1     FMC_NIOWR     EVENTOUT
PF9   TIM14_CH1     FMC_CD     EVENTOUT
PF10         FMC_INTR DCMI_D11 LCD_DE EVENTOUT
PF11         FMC_SDNRAS DCMI_D12   EVENTOUT
PF12         FMC_A6     EVENTOUT
PF13         FMC_A7     EVENTOUT
PF14         FMC_A8     EVENTOUT
PF15         FMC_A9     EVENTOUT

Порт AF0
AF1
AF2
AF3
AF4
AF5 AF6
AF7
SPI6
PG0                
PG1                
PG2                
PG3                
PG4                
PG5                
PG6                
PG7                
PG8           SPI6_NSS    
PG9                
PG10                
PG11                
PG12           SPI6_MISO    
PG13           SPI6_SCK    
PG14           SPI6_MOSI    
PG15                

Порт AF8 AF9 AF10
AF11 AF12 AF13 AF14 AF15
USART6 LCD ETH FMC DCMI LCD SYS
PG0         FMC_A10     EVENTOUT
PG1         FMC_A11     EVENTOUT
PG2         FMC_A12     EVENTOUT
PG3         FMC_A13     EVENTOUT
PG4         FMC_A14
FMC_BA0
    EVENTOUT
PG5         FMC_A15
FMC_BA1
    EVENTOUT
PG6         FMC_INT2 DCMI_D12 LCD_R7 EVENTOUT
PG7 USART6_CK       FMC_INT3 DCMI_D13 LCD_CLK EVENTOUT
PG8 USART6_RTS     ETH_PPS_OUT FMC_SDCLK     EVENTOUT
PG9 USART6_RX       FMC_NE2
FMC_NCE3
DCMI_VSYNC(1)   EVENTOUT
PG10   LCD_G3     FMC_NCE4_1
FMC_NE3
DCMI_D2 LCD_B2 EVENTOUT
PG11       ETH_MII_TX_EN
ETH_RMII_TX_EN
FMC_NCE4_2 DCMI_D3 LCD_B3 EVENTOUT
PG12 USART6_RTS LCD_B4     FMC_NE4   LCD_B1 EVENTOUT
PG13 USART6_CTS     ETH_MII_TXD0
ETH_RMII_TXD0
FMC_A24     EVENTOUT
PG14 USART6_TX     ETH_MII_TXD1
ETH_RMII_TXD1
FMC_A25     EVENTOUT
PG15 USART6_CTS       FMC_SDNCAS DCMI_D13   EVENTOUT

Примечание (1): альтернативная функция DCMI_VSYNC на PG9 доступна только в ревизии кристалла 3 (silicon revision 3).

Порт AF0
AF1
AF2 AF3 AF4 AF5 AF6
AF7
TIM5 TIM8 I2C2/I2C3 SPI5
PH0                
PH1                
PH2                
PH3                
PH4         I2C2_SCL      
PH5         I2C2_SDA SPI5_NSS    
PH6         I2C2_SMBA SPI5_SCK    
PH7         I2C3_SCL SPI5_MISO    
PH8         I2C3_SDA      
PH9         I2C3_SMBA      
PH10     TIM5_CH1          
PH11     TIM5_CH2          
PH12     TIM5_CH3          
PH13       TIM8_CH1N        
PH14       TIM8_CH2N        
PH15       TIM8_CH3N        

Порт AF8
AF9 AF10 AF11 AF12 AF13 AF14 AF15
CAN1/TIM12 OTG_HS ETH FMC DCMI LCD SYS
PH0               EVENTOUT
PH1               EVENTOUT
PH2       ETH_MII_CRS FMC_SDCKE0   LCD_R0 EVENTOUT
PH3       ETH _MII_COL FMC_SDNE0   LCD_R1 EVENTOUT
PH4     OTG_HS_ULPI_NXT         EVENTOUT
PH5         FMC_SDNWE     EVENTOUT
PH6   TIM12_CH1     FMC_SDNE1 DCMI_D8    
PH7       ETH_MII_RXD3 FMC_SDCKE1 DCMI_D9    
PH8         FMC_D16 DCMI_HSYNC LCD_R2 EVENTOUT
PH9   TIM12_CH2     FMC_D17 DCMI_D0 LCD_R3 EVENTOUT
PH10         FMC_D18 DCMI_D1 LCD_R4 EVENTOUT
PH11         FMC_D19 DCMI_D2 LCD_R5 EVENTOUT
PH12         FMC_D20 DCMI_D3 LCD_R6 EVENTOUT
PH13   CAN1_TX     FMC_D21   LCD_G2 EVENTOUT
PH14         FMC_D22 DCMI_D4 LCD_G3 EVENTOUT
PH15         FMC_D23 DCMI_D11 LCD_G4 EVENTOUT

Порт AF0
AF1
AF2 AF3 AF4
AF5 AF6 AF7
TIM5 TIM8 SPI2/I2S2 I2S2ext
PI0     TIM5_CH4     SPI2_NSS/
I2S2_WS
   
PI1            SPI2_SCK/
I2S2_CK
   
PI2       TIM8_CH4   SPI2_MISO I2S2ext_SD  
PI3       TIM8_ETR   SPI2_MOSI/
I2S2_SD
   
PI4       TIM8_BKIN        
PI5       TIM8_CH1        
PI6       TIM8_CH2        
PI7       TIM8_CH3        
PI8                
PI9                
PI10                
PI11                
PI12                
PI13                
PI14                
PI15                

Порт AF8
AF9 AF10 AF11 AF12 AF13 AF14 AF15
CAN1 OTG_HS ETH FMC DCMI LCD SYS
PI0         FMC_D24 DCMI_D13 LCD_G5 EVENTOUT
PI1         FMC_D25 DCMI_D8 LCD_G6 EVENTOUT
PI2         FMC_D26 DCMI_D9 LCD_G7 EVENTOUT
PI3         FMC_D27 DCMI_D10   EVENTOUT
PI4         FMC_NBL2 DCMI_D5 LCD_B4 EVENTOUT
PI5         FMC_NBL3 DCMI_VSYNC LCD_B5 EVENTOUT
PI6         FMC_D28 DCMI_D6 LCD_B6 EVENTOUT
PI7         FMC_D29 DCMI_D7 LCD_B7 EVENTOUT
PI8               EVENTOUT
PI9   CAN1_RX     FMC_D30   LCD_VSYNC EVENTOUT
PI10       ETH_MII_RX_ER FMC_D31   LCD_HSYNC EVENTOUT
PI11     OTG_HS_ULPI_DIR         EVENTOUT
PI12             LCD_HSYNC EVENTOUT
PI13             LCD_VSYNC EVENTOUT
PI14             LCD_CLK EVENTOUT
PI15             LCD_R0 EVENTOUT

Порт AF0
AF1
AF2
AF3
AF4
AF5
AF6 AF7
PJ0                
PJ1                
PJ2                
PJ3                
PJ4                
PJ5                
PJ6                
PJ7                
PJ8                
PJ9                
PJ10                
PJ11                
PJ12                
PJ13                
PJ14                
PJ15                

Порт AF8
AF9
AF10
AF11
AF12
AF13
AF14 AF15
LCD SYS
PJ0             LCD_R1 EVENTOUT
PJ1             LCD_R2 EVENTOUT
PJ2             LCD_R3 EVENTOUT
PJ3             LCD_R4 EVENTOUT
PJ4             LCD_R5 EVENTOUT
PJ5             LCD_R6 EVENTOUT
PJ6             LCD_R7 EVENTOUT
PJ7             LCD_G0 EVENTOUT
PJ8             LCD_G1 EVENTOUT
PJ9             LCD_G2 EVENTOUT
PJ10             LCD_G3 EVENTOUT
PJ11             LCD_G4 EVENTOUT
PJ12             LCD_B0 EVENTOUT
PJ13             LCD_B1 EVENTOUT
PJ14             LCD_B2 EVENTOUT
PJ15             LCD_B3 EVENTOUT

Порт AF0
AF1
AF2
AF3
AF4
AF5
AF6 AF7
PK0                
PK1                
PK2                
PK3                
PK4                
PK5                
PK6                
PK7                
PK8                
PK9                
PK10                
PK11                
PK12                
PK13                
PK14                
PK15                

Порт AF8
AF9
AF10
AF11
AF12
AF13
AF14 AF15
LCD SYS
PK0             LCD_G5 EVENTOUT
PK1             LCD_G6 EVENTOUT
PK2             LCD_G7 EVENTOUT
PK3             LCD_B4 EVENTOUT
PK4             LCD_B5 EVENTOUT
PK5             LCD_B6 EVENTOUT
PK6             LCD_B7 EVENTOUT
PK7             LCD_DE EVENTOUT

[Ссылки]

1. RM0090 Reference manual STM32F405/415, STM32F407/417, STM32F427/437 and STM32F429/439 advanced Arm®-based 32-bit MCUs site:st.com.
2. STM32F407, назначение альтернативных функций выводам GPIO.

 

Добавить комментарий


Защитный код
Обновить

Top of Page