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