結構圖就不上了
結構圖的上半部分為
輸入模式結構。
接下來就遇到了兩個開關和電阻,與 vdd相連的為上拉電阻,與vss相連
的為下拉電阻。再連線到施密特觸發器就把電壓訊號轉化為 0、1的數碼訊號存
儲在輸入資料暫存器(idr)。我們可以通過設定配置暫存器(crl、crh),控制
這兩個開關,於是就可以得到 gpio的
上拉輸入(gpio_mode_ipu ) 和
下拉輸入
模式(gpio_mode_ipd )了。
從它的結構我們就可以理解,若 gpio引腳配置為上拉輸入模式,在預設
狀態下(gpio引腳無輸入),讀取得的 gpio引腳資料為 1,高電平。而下拉模
式則相反,在預設狀態下其引腳資料為 0,低電平。
而 stm32的
浮空輸入模式(gpio_mode_in_floating)在晶元內部既沒有
接上拉,也沒有接下拉電阻,經由觸發器輸入。配置成這個模式直接用電壓表
測量其引腳電壓為 1點幾伏,這是個不確定值。由於其輸入阻抗較大,一般把
這種模式用於標準的通訊協議如 i2c、usart的接收端。
模擬輸入模式(gpio_mode_ain )則關閉了施密特觸發器,不接上、下拉電
阻,經由另一線路把電壓訊號傳送到片上外設模組。如傳送至給 adc模組,由
adc採集電壓訊號。所以使用adc外設的時候,必須設定為模擬輸入模式。
結構圖的下半部分為
輸出模式結構。
線路經過乙個由 p-mos和n-mos管組成的單元電路。而所謂
推挽輸出模
式,則是根據其工作方式來命名的。在輸出高電平時,p-mos導通,低電平
時,n-mos管導通。兩個管子輪流導通,乙個負責灌電流,乙個負責拉電流,
使其負載能力和開關速度都比普通的方式有很大的提高。推挽輸出的供電平為
0伏,高電平為 3.3伏。
在開漏輸出模式時,如果我們控制輸出為 0,低電平,則使 n-mos管導
通,使輸出接地,若控制輸出為 1 (無法直接輸出高電平),則既不輸出高電
平,也不輸出低電平,為高阻態。為正常使用時必須在外部接上乙個上拉電
阻。它具「線與」特性,即很多個開漏模式 引腳連線到一起時,只有當所有引
腳都輸出高阻態,才由上拉電阻提供高電平,此高電平的電壓為外部上拉電阻
所接的電源的電壓。若其中乙個引腳為低電平,那線路就相當於短路接地,使
得整條線路都為低電平,0伏。
stm32的gpio輸出模式就分為
普通推挽輸出(gpio_mode_out_pp )、普
通開漏輸出 (gpio_mode_out_od)及復用推挽輸出(gpio_mode_af_pp )、復
用開漏輸出(gpio_mode_af_od )。
普通推挽輸出模式一般應用在輸出電平為 0和3.3伏的場合。而普通開漏
輸出一般應用在電平不匹配的場合,如需要輸出 5伏的高電平,就需要在外部
接乙個上拉電阻,電源為 5伏,把 gpio設定為開漏模式,當輸出高阻態時,
由上拉電阻和電源向外輸出 5伏的電平。
對於相應的復用模式,則是根據 gpio的復用功能來選擇的,如 gpio的引
腳用作串列埠的輸出,則使用
復用推挽輸出模式。如果用在ic、smbus這些需要
線與功能的復用場合,就使用
復用開漏模式。其它不同的復用場合的復用模式
引腳配置將在具體的例子中講解。
在使用任何一種開漏模式,都需要接上拉電阻。
備註::
1》gpio設定成輸入狀態就是高阻態?這個還有待確認!
STM32 GPIO的輸入輸出 HAL庫
本文將介紹stm32基於hal庫的gpio使用,利用上文建立好的hal庫工程模板,可以方便的編寫應用程式。我們目標是編寫乙個led燈和按鍵的使用例子,每按下一次按鍵,led的亮滅狀態將進行一次反轉。我們建立 led.h 和 led.c 在工程模板的inc和src資料夾中。該模組 作用是防止在某乙個 ...
STM32 GPIO八種輸入輸出模式
參考 浮空,顧名思義,就相當與此埠在預設情況下什麼都不接,呈高阻態。浮空最大的特點就是電壓的不確定性,它可能是0v,也可能是vcc,還可能是介於兩者之間的某個值 最有可能 將不確定的訊號通過乙個電阻鉗位在高電平。沒有輸入或輸入為高電平時是高電平,輸入為低電平時就是低電平。將不確定的訊號通過乙個電阻鉗...
stm32 GPIO 輸入 按鍵檢測
使能 gpio 埠時鐘 初始化 gpio 目標引腳為輸入模式 浮空輸入 編寫簡單測試程式,檢測按鍵的狀態,實現按鍵控制 led 燈。1.按鍵引腳巨集定義 1 引腳定義 2 define key1 gpio clk rcc apb2periph gpioa 3 define key1 gpio por...