Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мироненко курсовая.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
782.6 Кб
Скачать
    1. Порты общего назначения gpio

GPIO (General Purpose Input-Output) — это выводы общего назначения, ноги микроконтроллера, доступные для прямого управления. Это обычно довольно дефицитный ресурс во многих популярных МК, но с STM32 эта проблема теряет актуальность: в самом мелком корпусе (LQFP48) доступно 37 GPIO, а в самом большом (LQFP176) — 140 GPIO. На рисунке 1.4.1 показана схема порта вывода STM32F100.

Рисунок 1.4.1 - схема порта вывода STM32F100

МК питаются 3.3 В, но до сих пор ещё активно используются 5-вольтовые микросхемы и логика, их нужно подключить. Поэтому в STM32 большинство выводов «толерантны» к 5 В. То есть, они могут принимать на вход 5 В без какой-либо угрозы их целостности.

Толерантный пин отличается от обычного тем, что у него верхний защитный диод подключён к Vdd_ft вместо Vdd. Из этой схемы становится понятно, что хоть выводы и толерантны к 5 В на вход, но вот выдавать 5 В на выход не могут — для этого нужен транзистор. Если нужно получить логическую единицу, то 3.3 В вполне распознаются 5-вольтовой логикой как 1, но если нужно именно 5 В, то для этого применяется режим Open-drain у GPIO.

У STM32F100хх имеется 8 режимов GPIO:

Выход общего назначения:

  • Push-pull - стандартный выход: при 0 в выходном регистре получается низкий уровень на выходе, при 1 — высокий.

  • Open-drain - (открытый сток, аналог открытого коллектора): вывод подключен к стоку N-MOS полевика в то время, как P-MOS полевик заперт, что позволяет управлять нагрузкой с большим напряжением, чем Vdd (3.3 В).

Вывод с альтернативной функцией (для периферии типа SPI, UART):

  • Push-pull

  • Open-drain

Вход:

  • Analog - аналоговый высокоимпендансный: подтягивающие резисторы и триггер Шмитта отключены. Используется при работе с АЦП.

  • Floating - обычный высокоимпендансный: подтягивающие резисторы отключены, триггер Шмитта включен.

  • Pull-up - вход с подтяжкой к питанию.

  • Pull-down - вход с прижатием у к «земле».

Линии GPIO объединены в порты, в STM32 — по 16 линий, поэтому нумеруются они с 0 по 15: PA0, PA1… PA15 — это линии порта A, например. Линии порта управляются программно с помощью нескольких регистров.

GPIOx_CRL и GPIOx_CRH — регистры конфигурации, содержат настройки режима (вход/выход) и частоты GPIO. Доступны на чтение и запись.

GPIOx_IDR и GPIOx_ODR — входной и выходной регистры: в первом хранится считанное со входов порта значение, во второй записывается новое состояние выводов. GPIOx_IDR доступен только на чтение, а GPIOx_ODR — на чтение и запись.

GPIOx_BSRR и GPIOx_BRR — регистры атомарного изменения битов в GPIOx_ODR.

Обычно, если нужно установить бит в регистре периферии, то его сначала нужно прочитать, потом применить побитовое 'ИЛИ' к считанному значению и битовой маске, после чего записать новое значение назад в регистр. То же и со сбросом битов, только маску нужно инвертировать и применить побитовое 'И'. А вот запись значений в GPIOx_BSRR и GPIOx_BRR изменяет только те биты выходного регистра, которые были установлены в единицу, притом происходит это за 1 такт, так что прерывание не сможет всё испортить.