класс Pin – управление выводами ввода-вывода¶
Объект Pin представляет один вывод GPIO на STM32. Он предоставляет методы для настройки режима вывода (вход, выход, альтернативная функция, аналоговый) и подтягивающих резисторов, а также для чтения или установки его цифрового уровня. Для аналогового измерения см. pyb.ADC; для перечисления альтернативных функций см. PinAF.
Все выводы разъёма предопределены как pyb.Pin.board.<name>. Большинство STM32 OpenMV Cam предоставляют выводы разъёма ввода-вывода P0 … P9; OpenMV Cam N6 предоставляет дополнительные выводы вплоть до P18:
p0 = pyb.Pin.board.P0
g = pyb.Pin(pyb.Pin.board.P0, pyb.Pin.IN)
К физическому порту/выводу STM32 также можно обращаться напрямую через pyb.Pin.cpu.<name>, обозначаемому буквой порта, за которой следует номер вывода (например, pyb.Pin.cpu.A0). Сопоставление каждого вывода разъёма OpenMV выводу CPU фиксировано платой.
Выводы также можно выбирать по строковому имени:
g = pyb.Pin("P0", pyb.Pin.OUT_PP)
Пользовательские имена можно добавить с помощью Pin.dict():
MyMapperDict = {"LeftMotorDir": pyb.Pin.cpu.A0}
pyb.Pin.dict(MyMapperDict)
g = pyb.Pin("LeftMotorDir", pyb.Pin.OUT_OD)
и запросить обратно:
pin = pyb.Pin("LeftMotorDir")
Кроме того, с помощью Pin.mapper() можно установить пользовательскую функцию сопоставления:
def MyMapper(pin_name):
if pin_name == "LeftMotorDir":
return pyb.Pin.cpu.A0
pyb.Pin.mapper(MyMapper)
так что вызов pyb.Pin("LeftMotorDir", pyb.Pin.OUT_PP) передаёт "LeftMotorDir" напрямую функции сопоставления.
Следующий порядок определяет, как имя сопоставляется с физическим выводом:
Объект
Pinпередаётся напрямую.Заданная пользователем функция сопоставления возвращает вывод.
Заданный пользователем словарь содержит подходящий ключ.
Строка совпадает с именем вывода платы (
P0,P1, …).Строка совпадает с именем порта/вывода CPU (
A0,B7, …).
Вызовите pyb.Pin.debug(True) для вывода диагностической информации о том, как каждый объект сопоставляется с выводом.
Конструкторы¶
- class pyb.Pin(id: str | Pin, *args, **kwargs)¶
Создаёт новый объект Pin, связанный с заданным
id. Если переданы дополнительные аргументы, они перенаправляются вPin.init()для настройки вывода.Методы класса¶
- classmethod debug(state: bool | None = None) bool | None¶
Получает или задаёт состояние отладки (
TrueилиFalseдля включения или выключения).
Методы¶
- init(mode: int, pull: int = Pin.PULL_NONE, *, value: int | None = None, alt: int | str = -1) None¶
Инициализирует вывод:
mode может быть одним из:
Pin.IN- настроить вывод как вход;Pin.OUT_PP- настроить вывод как выход с двухтактным управлением;Pin.OUT_OD- настроить вывод как выход с управлением с открытым стоком;Pin.ALT- настроить вывод как альтернативную функцию, вход или выход;Pin.AF_PP- настроить вывод как альтернативную функцию, двухтактную;Pin.AF_OD- настроить вывод как альтернативную функцию, с открытым стоком;Pin.ANALOG- настроить вывод как аналоговый.
pull может быть одним из:
Pin.PULL_NONE- без подтягивающих резисторов вверх или вниз;Pin.PULL_UP- включить подтягивающий вверх резистор;Pin.PULL_DOWN- включить подтягивающий вниз резистор.
Когда у вывода включён режим подтяжки
Pin.PULL_UPилиPin.PULL_DOWN, этот вывод подтягивается к 3V3 или GND соответственно через внутренний резистор (обычно десятки кОм – см. электрические характеристики в технической документации STM32 для используемой OpenMV Cam).value, если не None, задаёт выходное значение порта перед включением вывода.
alt можно использовать, когда режим равен
Pin.ALT,Pin.AF_PPилиPin.AF_OD, для задания индекса или имени одной из альтернативных функций, связанных с выводом. Этот аргумент ранее называлсяaf, который при необходимости всё ещё можно использовать.
- value(value: Any | None = None) int | None¶
Получает или задаёт цифровой логический уровень вывода:
Без аргумента возвращает 0 или 1 в зависимости от логического уровня вывода.
Если задан
value, устанавливает логический уровень вывода.valueможет быть чем угодно, что преобразуется в булево значение. Если оно преобразуется вTrue, вывод устанавливается в высокий уровень, иначе — в низкий.
- af() int¶
Возвращает текущую настроенную альтернативную функцию вывода. Возвращаемое целое число совпадает с одной из допустимых констант для аргумента af функции init.
Константы¶