STM32單片機的每組IO口都有4個32位配置寄存器用于配置GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR和GPIOx_PUPDR,2個32位數據寄存器用于配置輸入和輸出寄存器GPIOx_IDR和GPIOx_ODR,1個32位置位復位寄存器GPIOx_BSRR,1個32位鎖定寄存器GPIOx_LCKR和2個32位復用功能選擇寄存器GPIOx_AFRH和GPIOx_AFRL。
GPIO的輸出狀態可以配置為推挽或開漏加上上拉或下拉。輸出數據既可以來自輸出數據寄存器,也可以由其他外圍寄存器發出。每組IO口的速度都是可以配置的,可以配置為25MHz,50MHz或是100Mhz。數據輸入同樣也有幾種模式,它們分別為浮空,上下拉和模擬,并且輸入數據同樣可以配置為來自輸入寄存器或是其他的外圍寄存器。置位復位寄存器可以方便地對每一位進行單獨的配置,這在許多情況下非常有用。
經過上一段對GPIO口模式的說明,在這里對它的工作模式進行一個小結,它一共有八種組合,即有八種可配置的工作模式,分別是:
輸入浮空
輸入上拉
輸入下拉
模擬
帶上拉或下拉的開漏輸出
帶上拉或下拉的推挽輸出
帶上拉或下拉的復用功能推挽
帶上拉或下拉的復用功能開漏
STM32單片機GPIO口的工作模式解析