|
|
每個通用IO口都有兩個32位的配置寄存器(GPIOx_CRL, GPIOx_CRH),兩個32位的數據寄存器 (GPIOx_IDR, GPIOx_ODR), 一個32位的set/reset寄存器 (GPIOx_BSRR),一個16位的reset寄存器(GPIOx_BRR),一個32位的鎖定寄存器(GPIOx_LCKR).
每個general purpose io口都可以獨立配置為以下八種模式的其中一種,浮空輸入,上拉輸入,下拉輸入,模擬輸入,開漏輸出,推挽輸出,復用開漏輸出,復用推挽輸出。
每個io口都可以獨立配置,但是寄存器只能32位的訪問,不支持半個字的訪問和位訪問,GPIOx_BSRR和GPIOx_BRR寄存器允許對任何gpio寄存器的讀和修改獨立訪問,這樣,在讀和修改訪問之間產生IRQ時不會有風險。
stm32的io口是3.3V的但兼容5V輸入,在3.3V供電的stm32芯片中,要輸出5V電平,只需將io口配置為開漏輸出然后接上拉電阻即可。
復位后stm32的io口默認為浮空輸入模式 (CNFx[1:0]=01b, MODEx[1:0]=00b). JATG管腳為上拉或下拉模式,
PA15: JTDI 上拉 PA14: JTCK 下拉 PA13: JTMS 上拉 PB4: JNTRST 上拉 。
當配置為輸出模式時被寫入輸出數據寄存器 (GPIOx_ODR) 里的值在管腳上輸出,可能用推挽輸出和開漏輸出(輸出低電平時僅NMOS使能)。
在每個APB2時鐘下 Input Data register (GPIOx_IDR) 捕獲io口的狀態。
每個GPIO口內部有弱上拉電阻和弱下拉電阻,輸入時可選使能。
|
|