GPIO的介紹
GPIO (general purpose input output)是通用輸入輸出端口的簡稱,通俗來講就是單片機上的引腳,在STM32中,GPIO的工作模式被細分為8種,由4個32位寄存器共同控制。
輸出和輸入都是針對芯片引腳來講的(即引腳的對外輸出,和外界對引腳的輸入)。
四種輸入模式介紹
輸入模式下可讀取端口的高低電平或電壓。例如各類傳感器(使用ADC功能),如果要將獲取的電平傳送給單片機的某一個引腳,那就要將這個引腳設置為輸入模式。
這種輸入模式比較特殊,該模式主要為片上外設ADC而配置,從外部讀取模擬信號,當設置為模擬輸入時,GPIO會失效,引腳直接接入內部ADC。
特點:相較于其他輸入模式只能讀取到邏輯高/低電平(數字量),該模式能讀取到細微變化的值(模擬量)。通俗來講就是,別的模式只能讀取0和1,而模擬輸入可以讀取到0-1的變化區間。
主要應用:所有要用到ADC模擬輸入的外設(例如煙霧傳感器,引腳需要接收模擬信號進而計算電壓值),低功耗下省電。
2、GPIO_Mode_IN_FLOATING 浮空輸入
數據通道中僅接入TTL觸發器(作用是將相對緩慢變化的模擬信號變成矩形信號)整形,隨后輸入輸入數據寄存器。浮空輸入狀態下,IO的電平狀態是不確定的,完全由外部輸入決定,如果在該引腳懸空(無信號輸入)的情況下,讀取該端口的電平是不確定的。該種工作模式未接入任何上拉/下拉電阻。
主要應用:可用于按鍵KEY實驗、發送接收信號RX、TX、IIC、USART等。(但按鍵一般更常用到上拉下拉輸入,待會再重點記錄)。主要還是發送和接收信號的引腳常設置為浮空輸入。
3、GPIO_Mode_IPD 下拉輸入
可讀取引腳電平,與浮空輸入相比,它內部連接下拉電阻,懸空時默認為低電平,其余相同。
4、GPIO_Mode_IPU 上拉輸入
可讀取引腳電平,與浮空輸入相比,它內部連接上拉電阻,懸空時默認為高電平,其余相同。
主要應用:
①按鍵的使用
②器件的外部中斷(IRQ)引腳觸發中斷條件為下降沿觸發/低電平觸發,這樣在無信號輸入時始終保持高電平,如果有事件觸發中斷IRQ可以輸出一個低電平,進而可產生(下降沿/低電平)中斷,此時就可以將該引腳設置為上拉輸出,使中斷條件滿足。
③同理,器件的外部中斷(IRQ)引腳觸發中斷條件為上升沿觸發/高電平觸發時,該端口可以選擇下拉輸入模式。
重點記錄:按鍵與上拉/下拉輸入
由圖不難看出:當KEY_UP按下后,會接入VCC的高電平,而當按鍵不按下時,即為懸空狀態(無信號輸入),此時IO輸入是未知的,程序可能卡死在這里或者跑飛。那我們就要用到一個下拉電阻,使該引腳在懸空狀態下電平被拉低。即按鍵KEY_UP按下為高電平,不按下為低電平。
同理,當KEY0、KEY1、KEY2三個按鍵按下時會接入GND的低電平,而不按下時輸入未知。為了避免程序跑飛,采用上拉電阻,讓按鍵按下時為低電平,按鍵松開為高電平。
-
單片機
+關注
關注
6037文章
44559瀏覽量
635512 -
STM32
+關注
關注
2270文章
10900瀏覽量
356152 -
輸入端口
+關注
關注
0文章
10瀏覽量
7932 -
GPIO
+關注
關注
16文章
1204瀏覽量
52115
發布評論請先 登錄
相關推薦
評論