В дополнение к таким базовым вещам, как контакты питания и тактовые импульсы, MCU получил множество аппаратных периферийных устройств внутри. Аппаратная периферия - это нечто вроде GPIO (универсальный ввод / вывод), AD C, UART, SPI и др. 1015 *. Каждое такое аппаратное периферийное устройство имеет несколько возможных выводов, на которые можно направить его функции.
Традиционно, они были в значительной степени исправлены - если вы хотите UART Tx, то вы всегда получите его на каком-то фиксированном пин-коде, возьмите его или оставьте. В настоящее время большинство микроконтроллеров имеют достаточно гибкую внутреннюю структуру, позволяя перенаправлять функциональные возможности аппаратного периферийного устройства практически на любой понравившийся вывод.
В любом случае несколько аппаратных периферийных устройств могут использовать один и тот же вывод, и тогда это MCU указывает c, который имеет приоритет. Например, GPIO может присутствовать на выводе по умолчанию, но если вы включите UART, то, возможно, MCU заявляет, что вместо этого вы получаете UART Tx на этом выводе.
Что касается аппаратного периферийного устройства, называемого GPIO, они почти всегда сгруппированы в ports , где каждый порт состоит из нескольких выводов. Чаще всего регистры портов имеют размер 8 бит или размер слова процессора. Каждый бит в различных регистрах портов соответствует выводу.
У вас будет регистр данных порта, который представляет собой фактическое чтение / запись на вывод, регистр направления данных с указанием входа или выхода, а затем различные другие регистры для прерываний, включение резистора напряжения и т. Д. c и др c.