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. [Функциональное описание GPIO] Каждый бит порта GPIO может быть индивидуально сконфигурирован программно для работы в следующих режимах: • Плавающий вход (высокое входное сопротивление). Примечание: подробные физические и электрические характеристики каждого порта I/O следует искать в даташите на конкретную модель микроконтроллера STM32. Каждый вывод порта I/O свободно управляется программой, однако к регистрам порта I/O осуществляется доступ как к 32-битным словам, половинам слова или байтам. Назначение регистра GPIOx_BSRR - предоставить атомарный доступ на чтение/модификацию к любому регистру GPIO. Таким образом, отсутствует риск возникновения прерывания между доступами на чтение и запись. На рис. 25 показана базовая структура бита I/O, который поддерживает возможность подачи на вход уровня 5V (так называемая функция 5V tolerant входа при напряжении питания 3.3V для портов I/O). В таблице 39 представлены возможные конфигурации бита порта. Рис. 25. Базовая структура 5V-tolerant ножки порта I/O. Примечание (1): VDD_FT потенциал специфичен для 5V-tolerant I/O и отличается от VDD. Таблица 35. Конфигурации бита порта (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. Когда вывод сконфигурирован как выход, записанное значение в регистр выходных данных (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. Эта структура показана далее на рисунках 26 и 27. В дополнение к этой гибкой архитектуре мультиплексирования I/O, каждое периферийное устройство имеет свои альтернативные функции, отображенные на различные ножки I/O, чтобы оптимизировать количество периферийных устройств, доступных в корпусах с меньшим количеством выводов. Для использования I/O в определенной конфигурации выполните следующие действия: • Системная функция (SYS). Подключите ножку I/O к AF0 и сконфигурируйте её в зависимости от используемой функции: – JTAG/SWD, после каждого сброса эти выводы назначаются как выделенные для функции отладки, и могут использоваться хостом отладки (ножка не управляется контроллером GPIO). Примечание: пользователь может запретить некоторые или все ножки JTAG/SWD, и таким образом освободить их для использования как GPIO (освобожденные выводы подсвечены серым в таблице 36). Для дополнительной информации см. секции Section 7.2.10: Clock-out capability и Section 6.2.10: Clock-out capability даташита [1]. Таблица 36. Гибкое назначение выводов отладчика SWJ-DP. "Освобождено" - означает, что эти ножки не используются для функций отладки и могту быть задействованы как порты GPIO.
• GPIO. Регистром GPIOx_MODER нужная ножка I/O конфигурируется как вход или выход. • AF (альтернативная функция периферийного устройства). Для ADC и DAC сконфигурируйте нужную ножку I/O как аналоговую с помощью регистра GPIOx_MODER. Для других периферийных устройств: – Сконфигурируйте нужную ножку I/O в качестве альтернативной функции с помощью регистра GPIOx_MODER. • 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] выбирает выделенную альтернативную функцию: Для ножек от 8 до 15 регистр GPIOx_AFRH[31:0] выбирает выделенную альтернативную функцию: Рис. 26. Выбор альтернативной функции на микроконтроллерах STM32F405xx/07xx и STM32F415xx/17xx. Примечание (1): сконфигурировано в FS. Для ножек от 0 до 7 регистр GPIOx_AFRL[31:0] выбирает выделенную альтернативную функцию: Для ножек от 8 до 15 регистр GPIOx_AFRH[31:0] выбирает выделенную альтернативную функцию: Рис. 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 запрограммирован как вход: • Выходной буфер запрещен. Рис. 28 показывает входную конфигурацию бита порта I/O. Рис. 28. Конфигурации входа для режимов floating, pull-up и pull-down. Конфигурация вывода. Когда порт I/O запрограммирован как выход: • Выходной буфер разрешен: – Режим открытого стока (open-drain): записанный лог. 0 в регистр выходных данных активирует (открывает) нижнее плечо драйвера N-MOS, в то время как записанная лог. 1 переводит ножку порта в отключенное состояние Hi-Z (верхнее плечо драйвера P-MOS никогда не активируется). • Активируется входной триггер Шмидта. • Активированы ли слабые резисторы подтяжки (weak pull-up и pull-down), или нет, зависит от значения в регистре GPIOx_PUPDR. • Данные, присутствующие на ножке I/O, защелкиваются в регистр входных данных на каждом такте AHB1. • Доступ на чтение регистра входных данных показывает состояние портов I/O. • Доступ на чтение в регистра выходных данных покажет последнее записанное в него значение. Рис. 29 показывает выходную конфигурацию бита порта I/O. Рис. 29. Конфигурация выхода. Конфигурация AF. Когда на ножку I/O запрограммирована альтернативная функция (AF): • Выходной буфер может быть сконфигурирован либо как открытый сток (open-drain), либо как двухтактный буфер (push-pull). • На выходной буфер поступает сигнал от периферийного устройства (разрешение передатчика и данные от него). • Активируется входной триггер Шмидта. • Активированы ли слабые резисторы подтяжки (weak pull-up и pull-down), или нет, зависит от значения в регистре GPIOx_PUPDR. • Данные, присутствующие на ножке I/O, защелкиваются в регистр входных данных на каждом такте AHB1. • Доступ на чтение регистра входных данных показывает состояние портов I/O. Рис. 30 показывает конфигурацию альтернативной функции бита порта I/O. Рис. 30. Конфигурация альтернативной функции (AF). Аналоговая конфигурация. Когда ножка порта I/O запрограммирована в analog-режиме: • Выходной буфер запрещен. • Триггер Шмидта на входе деактивирован, обеспечивая нулевое потребление тока для каждого аналогового значения на ножке I/O. Выход триггера Шмидта получает постоянное нулевое значение. • Слабые резисторы подтяжки (weak pull-up и weak pull-down) запрещены. • Доступ на чтение в регистру входных данных даст значение "0". Примечание: в analog-конфигурации выводы I/O теряют способность принимать по входу уровень 5V (они не являются 5V tolerant). На рис. 31 показана высокоомная, аналоговая конфигурация входа для бита порта I/O. Рис. 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_AF2 (PI8) может использоваться для следующих целей: • RTC_TAMP1: детектирование события взлома. Выбор соответствующей ножки выполняется через регистр RTC_TAFCR следующим образом: • TAMP1INSEL используется для выбора, какая ножка используется как вход RTC_TAMP1 tamper. Механизм выхода следует порядку приоритета, перечисленному в таблицах 37 и 38. Таблица 37. Ножка RTC_AF1(1).
Примечание (1): OD означает open-drain (открытый сток), PP push-pull (двухтактный драйвер). Таблица 38. Ножка RTC_AF2.
[Регистры 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
MODERy[1:0]: конфигурация бит порта x (y = 0..15). Эти биты записываются программой, чтобы сконфигурировать режим работы I/O. 00: вход (обычное состояние после сброса по умолчанию) Смещение адреса: 0x04
Биты 31:16 зарезервированы, и должны удерживаться в состоянии сброса (все нули). OTy (биты 15:0): биты конфигурации порта x (y = 0..15). Эти биты записываются программой, чтобы сконфигурировать тип выхода порта I/O. 0: двухтактный выход, push-pull (состояние по умолчанию после сброса) Смещение адреса: 0x08 Значения сброса: • 0x0C000000 для порта A
OSPEEDRy[1:0]: биты конфигурации порта x (y = 0..15). Эти биты записываются программой, чтобы сконфигурировать скорость переключения выхода. 00: низкая скорость Примечание: см. в даташите на используемый микроконтроллер значения бит OSPEEDRy в зависимости от диапазона напряжений питания VDD и внешней нагрузки. Смещение адреса: 0x0C Значения сброса: • 0x64000000 для порта A
PUPDRy[1:0]: биты конфигурации порта x (y = 0..15). Эти биты записываются программой, чтобы сконфигурировать верхние (pull-up) или нижние (pull-down) подтягивающие резисторы. 00: подтягивающие резисторы отключены Смещение адреса: 0x10
Биты 31:16 зарезервированы, и должны удерживаться в состоянии сброса (все нули). IDRy (биты 15:0): входные данные порта (y = 0..15). Эти биты работают только на чтение, и к ним можно осуществлять доступ только как к слову (32 бита). Прочитанное слово содержит входное значение соответствующего порта I/O. Смещение адреса: 0x14
Биты 31:16 зарезервированы, и должны удерживаться в состоянии сброса (все нули). ODRy (биты 15:0): выходные данные порта (y = 0..15). Эти биты можно считывать и записывать программно. Примечание: для атомарного сброса и установки бит можно использовать регистр GPIOx_BSRR (x = A..I/J/K). Смещение адреса: 0x18
BRy (биты 31:16): биты для сброса разрядов y порта x (y = 0..15). Эти биты работают только на запись, и к ним можно осуществлять доступ как к полному слову (32 бита), половине слова (16 бит) или байту (8 бит). Чтение этих бит возвратит значение 0x0000. 0: никакого влияния на соответствующий бит ODRx Примечание: если в одной операции одновременно установлены конкурирующие биты BSx и BRx, то бит BSx имеет приоритет. BSy (биты 15:0): биты для установки разрядов y порта x (y = 0..15). Эти биты работают только на запись, и к ним можно осуществлять доступ как к полному слову (32 бита), половине слова (16 бит) или байту (8 бит). Чтение этих бит возвратит значение 0x0000. 0: никакого влияния на соответствующий бит ODRx Этот регистр используется для блокировки конфигурации бит порта, когда применена корректная последовательность записи к биту 16 (LCKK). Значение бит [15:0] используется для блокировки конфигурации GPIO. Во время последовательности записи значение LCKR[15:0] не должно меняться. Когда последовательность блокировки (LOCK sequence) была применена к биту порта, значение этого бита больше не может быть изменено, пока не произойдет следующий сброс MCU или периферии. Примечание: для записи в регистр GPIOx_LCKR используется специальная последовательность записи. Во время этой последовательности допускается доступ только к режиме полного слова (32 бита). Каждая блокировка бита замораживает определенный регистр конфигурации (регистры управления и альтернативной функции). Смещение адреса: 0x1C
Возможен доступ на чтение и запись, но только 32-битный. Биты 31:17 зарезервированы, и должны удерживаться в состоянии сброса (все нули). LCKK (бит 16): LoCK Key, ключ блокировки. Этот бит может быть прочитан в любой момент времени. Изменен он может быть только специальной последовательностью блокировки (lock key write sequence). 0: блокировка конфигурации порта не активна LOCK key write sequence: WR LCKR[16] = ‘1’ + LCKR[15:0] Примечание: во время операции LOCK key write sequence, значение LCK[15:0] не должно изменяться. Любая ошибка в последовательности записи оборвет (отменит) установку блокировки. После того, как выполнена первая последовательности блокировки любого бита порта любой доступ на чтение бита LCKK всегда возвратит 1, пока не произойдет следующий сброс микроконтроллера. LCKy (биты 15:0): блокируемый бит y порта x (y= 0..15). Эти биты можно читать и записывать, однако они могут быть записаны только когда бит LCKK в состоянии лог. 0. 0: конфигурация порта не заблокирована Смещение адреса: 0x20
AFRLy (биты 31:0): выбор альтернативной функции для бита y порта x (y = 0..7). Эти биты записывает программа, чтобы сконфигурировать альтернативную функцию I/O. Биты AFRLy выбирают: 0000: AF0 1000: AF8 Смещение адреса: 0x24
AFRHy (биты 31:0): выбор альтернативной функции для бита y порта x (y = 8..15). Эти биты записывает программа, чтобы сконфигурировать альтернативную функцию I/O. Биты AFRLy выбирают: 0000: AF0 1000: AF8 [Таблицы альтернативных функций портов микроконтроллеров STM32F427xx, STM32F429xx] По умолчанию (после сброса) все ножки портов GPIOx настроены на альтернативную функцию AF0. Таблицу всех альтернативных функций можно найти в даташите на микроконтроллер, она называется Alternate function mapping. Внимание: у некоторых ножек портов могут быть дополнительные функции аналоговые функции АЦП, ЦАП, пробуждения (см. столбец Analog). Например, ножки портов PA4 и PA5 микроконтроллеров STM32F4xx выполняют дополнительные функции выходов ЦАП (DAC_OUT1 и DAC_OUT2).
Примечание (1): FT = 5V tolerant (входы допускают уровень 5V), за исключением случая, когда активен аналоговый режим или режим генератора (для PC14, PC15, PH0 и PH1).
Примечание: ножка корпуса порта PB2 совмещена с функцией BOOT1, выбирающей вместе с функцией вывода BOOT0 режим загрузки. Уровень на BOOT1 имеет значение только когда на BOOT0 уровень лог. 1.
Примечание (1): альтернативная функция DCMI_VSYNC на PG9 доступна только в ревизии кристалла 3 (silicon revision 3).
[Ссылки] 1. RM0090 Reference manual STM32F405/415, STM32F407/417, STM32F427/437 and STM32F429/439 advanced Arm®-based 32-bit MCUs site:st.com. |