GPIO (порты ввода-вывода общего назначения) — это управляемые программой выводы микроконтроллера. Каждый вывод можно настроить регистром направления как вход или выход. В режиме выхода программа задаёт на нём 0 или 1 (низкий/высокий уровень) — так зажигают светодиод или включают реле. В режиме входа программа читает уровень — например, состояние кнопки.
У входа важна подтяжка: внутренний резистор pull-up к питанию или pull-down к земле задаёт «спокойный» уровень, когда внешний сигнал не подключён, иначе вход «висит в воздухе» и ловит помехи. Многие выводы совмещают функции: тот же пин может быть GPIO, либо TX/RX последовательного порта, либо вход АЦП, либо линия SPI/I2C.