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
端口輸出資料寄存器
預設 輸出為0
端口輸入資料寄存器
與輸出資料寄存器相同,但輸入寄存器隻能讀。
端口設定/清除寄存器
該寄存器可以友善地快速地實作對端口某些特定位的操作,而不影響其它位的狀态。值得注意的是,一個GPIO的置零或者置一操作,需要兩位來完成,
=設定位為一才會置為一,清除為置為1才會置為零。兩者同時為一時候,以清除位為準。
端口位清除寄存器
與BSSR相同,但隻能清除
端口配置鎖定寄存器(LCKR)
鎖定相應端口的某一位,也就是鎖定控制寄存器CRL/CRH相應的4個位,在下次系統複位之前更改該端口該位的配置無效,簡單的說就是鎖定IO無法配置為其他模式,高低電平可以輸出具體怎麼用,還需要實際驗證,不過這寄存器太雞肋了,大概是沒有機會驗證的了。