class Pin – styra I/O-stift¶
Ett Pin-objekt representerar en enskild GPIO på STM32. Det tillhandahåller metoder för att konfigurera stiftets läge (ingång, utgång, alternativ funktion, analog) och pull-resistorer, samt för att läsa eller driva dess digitala nivå. För analog sampling se pyb.ADC; för uppräkning av alternativa funktioner se PinAF.
Alla header-stift är fördefinierade som pyb.Pin.board.<name>. De flesta STM32 OpenMV Cam exponerar I/O-header-stiften P0 … P9; OpenMV Cam N6 exponerar ytterligare stift upp till P18
p0 = pyb.Pin.board.P0
g = pyb.Pin(pyb.Pin.board.P0, pyb.Pin.IN)
Den underliggande STM32-porten/-stiftet kan även adresseras direkt via pyb.Pin.cpu.<name>, namngivet som portbokstaven följd av stiftnumret (till exempel pyb.Pin.cpu.A0). Mappningen av varje OpenMV-header-stift till ett CPU-stift är fast bestämd av kortet.
Stift kan också väljas med strängnamn:
g = pyb.Pin("P0", pyb.Pin.OUT_PP)
Användardefinierade namn kan läggas till med Pin.dict()
MyMapperDict = {"LeftMotorDir": pyb.Pin.cpu.A0}
pyb.Pin.dict(MyMapperDict)
g = pyb.Pin("LeftMotorDir", pyb.Pin.OUT_OD)
och frågas tillbaka:
pin = pyb.Pin("LeftMotorDir")
Alternativt kan en anpassad mappningsfunktion installeras med Pin.mapper()
def MyMapper(pin_name):
if pin_name == "LeftMotorDir":
return pyb.Pin.cpu.A0
pyb.Pin.mapper(MyMapper)
så att ett anrop till pyb.Pin("LeftMotorDir", pyb.Pin.OUT_PP) skickar "LeftMotorDir" direkt till mapparen.
Följande ordning avgör hur ett namn mappas till ett fysiskt stift:
Ett
Pin-objekt skickas direkt.Den användarangivna mappningsfunktionen returnerar ett stift.
Den användarangivna ordlistan innehåller en matchande nyckel.
Strängen matchar ett kortstiftnamn (
P0,P1, …).Strängen matchar ett CPU-port/-stiftnamn (
A0,B7, …).
Anropa pyb.Pin.debug(True) för att skriva ut diagnostisk information om hur varje objekt mappas till ett stift.
Konstruktorer¶
- class pyb.Pin(id: str | Pin, *args, **kwargs)¶
Skapa ett nytt Pin-objekt kopplat till det angivna
id. Om ytterligare argument anges vidarebefordras de tillPin.init()för att konfigurera stiftet.Klassmetoder¶
- classmethod debug(state: bool | None = None) bool | None¶
Hämta eller ställ in felsökningstillståndet (
TrueellerFalseför på eller av).
Metoder¶
- init(mode: int, pull: int = Pin.PULL_NONE, *, value: int | None = None, alt: int | str = -1) None¶
Initiera stiftet:
mode kan vara något av:
Pin.IN- konfigurera stiftet för ingång;Pin.OUT_PP- konfigurera stiftet för utgång, med push-pull-styrning;Pin.OUT_OD- konfigurera stiftet för utgång, med open-drain-styrning;Pin.ALT- konfigurera stiftet för alternativ funktion, ingång eller utgång;Pin.AF_PP- konfigurera stiftet för alternativ funktion, push-pull;Pin.AF_OD- konfigurera stiftet för alternativ funktion, open-drain;Pin.ANALOG- konfigurera stiftet för analog.
pull kan vara något av:
Pin.PULL_NONE- inga pull-up- eller pull-down-resistorer;Pin.PULL_UP- aktivera pull-up-resistorn;Pin.PULL_DOWN- aktivera pull-down-resistorn.
När ett stift har pull-läget
Pin.PULL_UPellerPin.PULL_DOWNaktiverat, dras det stiftet till 3V3 respektive GND genom en intern resistor (vanligtvis tiotals kOhm – se de elektriska egenskaperna i STM32-databladet för den OpenMV Cam som används).value kommer, om den inte är None, att ställa in portens utvärde innan stiftet aktiveras.
alt kan användas när läget är
Pin.ALT,Pin.AF_PPellerPin.AF_ODför att ange index eller namn på en av de alternativa funktioner som är kopplade till ett stift. Detta argument hette tidigareafvilket fortfarande kan användas vid behov.
- value(value: Any | None = None) int | None¶
Hämta eller ställ in stiftets digitala logiknivå:
Utan argument returneras 0 eller 1 beroende på stiftets logiknivå.
Om
valueanges ställs stiftets logiknivå in.valuekan vara vad som helst som konverteras till ett booleskt värde. Om det konverteras tillTruesätts stiftet högt, annars sätts det lågt.
- af() int¶
Returnerar stiftets för närvarande konfigurerade alternativa funktion. Det returnerade heltalet kommer att matcha en av de tillåtna konstanterna för argumentet af till init-funktionen.
Konstanter¶