天天看點

GPIO工作模式和寄存器

GPIO工作模式

1、浮空輸入模式 GPIO_Mode_IN_FLOATING

引腳狀态不确定,引腳懸空時,電平狀态是不确定的值,可以做KEY識别,序列槽的RX1

2、模拟輸入模式 GPIO_Mode_AIN

ADC模拟輸入,可以讀取到細微變化的值

3,4、帶上拉、下拉輸入模式 GPIO_Mode_IPD GPIO_Mode_IPU

采用帶上拉或者下拉輸入的模式先給MCU一個确定的狀态,當外部電路電平狀态發生變化時,易于MCU的判斷。這樣可以增強MCU的抗幹擾能力

5、推挽輸出模式 GPIO_Mode_Out_PP

用于連接配接數字器件

6、開漏輸出模式 GPIO_Mode_Out_OD

如果外部不接上拉電阻時,隻能輸出低電平,是以要想輸出高電平必須要外接上拉電阻。可以用來比對不同的電平信号,也就是用于不同電壓的系統之間的通信,如模拟I2C使用開漏輸出_OUT_OD

7,8、複用推挽、複用開漏輸出模式 GPIO_Mode_AF_ODGPIO_Mode_AF_PP

可以了解為把GPIO配置為第二功能使用的時候的配置,并非單純的用作IO輸入或輸出.

比如使用外設IIC時,我們需要把GPIO配置為複用推挽輸出,用于資料通信功能。

再比如序列槽通信的TX、以及SPI外設的GPIO使用就要把引腳設定為複用開漏輸出。

GPIO寄存器

共七個寄存器,

包括:

兩個配置寄存器 CRL,CRH

兩個資料寄存器 IDR,ODR

一個set/reset 寄存器 BSRR

一位reset 寄存器 BRR

一位32位的鎖定寄存器 == LCKR==

端口配置高/低寄存器

複位預設為浮空輸入模式,低寄存器配置[7:0]位的GPIO,高寄存器配置[15:8]位的GPIO

GPIO工作模式和寄存器

端口輸出資料寄存器

預設 輸出為0

GPIO工作模式和寄存器

端口輸入資料寄存器

與輸出資料寄存器相同,但輸入寄存器隻能讀。

GPIO工作模式和寄存器

端口設定/清除寄存器

該寄存器可以友善地快速地實作對端口某些特定位的操作,而不影響其它位的狀态。值得注意的是,一個GPIO的置零或者置一操作,需要兩位來完成,

=設定位為一才會置為一,清除為置為1才會置為零。兩者同時為一時候,以清除位為準。

GPIO工作模式和寄存器

端口位清除寄存器

與BSSR相同,但隻能清除

GPIO工作模式和寄存器

端口配置鎖定寄存器(LCKR)

鎖定相應端口的某一位,也就是鎖定控制寄存器CRL/CRH相應的4個位,在下次系統複位之前更改該端口該位的配置無效,簡單的說就是鎖定IO無法配置為其他模式,高低電平可以輸出具體怎麼用,還需要實際驗證,不過這寄存器太雞肋了,大概是沒有機會驗證的了。

GPIO工作模式和寄存器

繼續閱讀