class Pin -- 控制 I/O 接腳¶
Pin 物件代表 STM32 上的單一 GPIO。它提供方法來設定接腳的模式(輸入、輸出、替代功能、類比)與上下拉電阻,並讀取或驅動其數位準位。關於類比取樣請參閱 pyb.ADC;關於替代功能列舉請參閱 PinAF。
所有排針接腳都預先定義為 pyb.Pin.board.<name>。大多數 STM32 OpenMV Cam 提供 I/O 排針接腳 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)¶
建立一個與給定
id關聯的新 Pin 物件。如果提供了額外引數,它們會被轉送給Pin.init()以設定接腳。類別方法¶
方法¶
- 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(通常為數十 kOhm —— 請參閱所使用 OpenMV Cam 的 STM32 資料手冊中的電氣特性)。value 若不為 None,會在啟用接腳前設定連接埠輸出值。
alt 可在模式為
Pin.ALT、Pin.AF_PP或Pin.AF_OD時使用,以設定與接腳關聯的其中一個替代功能的索引或名稱。此引數先前稱為af,需要時仍可使用。
常數¶