STM32之GPIO輸入輸出

2021-06-15 10:30:38 字數 1473 閱讀 1251

gpio的輸出

背景:應用在點亮led。led串聯電阻再上拉,另一端與gpio口相連。因此,gpio輸出高電平則led滅,輸出低電平則led亮。

第一步工作是初始化gpio,使能外設時鐘,因為gpio是掛載在apb2中線上的。然後對gpio_inittypedef結構體進行初始化,設定gpio_pin的具體引腳,輸出頻率,工作模式,如上拉,下拉,浮空等。

關於gpio的庫函式裡有gpio_setbit( )和gpio_resetbits ( )兩個函式,分別是設定指定的資料埠位和清除指定的資料埠位,就像置1和清零。

函式名    :gpio_setbits 

函式原形:       void gpio_setbits(gpio_typedef* gpiox, u16 gpio_pin)  

功能描述:       設定指定的資料埠位 

輸入引數1:     gpiox :x 可以是a,b ,c ,d 或者e,來選擇gpio外設 

輸入引數2:     gpio_pin:待設定的埠位 。該引數可以取gpio_pin_x(x 可以是 0-15)的任意組合 ,如gpio_pin_10 | gpio_pin_15

函式gpio_resetbits 的原型為void gpio_resetbits(gpio_typedef* gpiox, u16 gpio_pin),其引數的含義和上面也是類似的。

因此,點亮乙個lde燈變成呼叫函式  

gpio_resetbits(gpiox,gpio_pin_x);  輸出低電平點亮

熄滅乙個led燈變成

gpio_sebits(gpiox,gpio_pin_x); 輸出高電平熄滅

gpio輸入

當gpio連線了外部感測器,而感測器的訊號是開關量的時候,gpio可能需要去輪詢輸入的狀態是高是低,這時候gpio就需要當做輸入來用。

按鍵的動作可以用來模擬感測器的動作,按鍵通過上拉電阻接到高電平。當按鍵按下時,會使相應的gpio管腳變成低電平。配置這些gpio引腳為上拉模式,在沒有收到訊號的情況下,保持這些gpio口為高電平。

gpio的庫函式也為我們提供了讀取某指定埠管腳的輸入-- gpio_readinputdatabit 正是這樣乙個函式

函式名 gpio_readinputdatabit 

函式原形  u8 gpio_readinputdatabit(gpio_typedef* gpiox, u16 gpio_pin) 

功能描述  讀取指定埠管腳的輸入 

輸入引數1  gpiox :x 可以是a,b ,c ,d 或者e,來選擇gpio外設 

輸入引數2  gpio_pin:待讀取的埠位 

返回值  輸入埠管腳值,高或者低

u8 readvalue; 

readvalue = gpio_readinputdatabit(gpiox, gpio_pin_x);

返回值readvalue反應了gpio口的高低狀態。

STM32之GPIO並行輸入輸出資料程式設計技巧

在stm32實際程式設計中,會遇到gpio口連續的引腳並行輸出應用,例如數碼管驅動,lcd並行驅動,如果單獨逐個去驅動io口,程式設計麻煩,而且效率比較低,其實可以直接採用暫存器程式設計實現,這種思路的前提是,盡量從gpio pin 0埠開始分配管腳,這樣比較方便。這裡主要用到gpio的2個暫存器,...

STM32的GPIO輸入輸出模式配置

最近在看資料手冊的時候,發現stm32的gpio輸入輸出模式的配置種類有8種之多 輸入和輸入各4種 1 gpio mode ain模擬輸入 2 gpio mode in floating浮空輸入 3 gpio mode ipd下拉輸入 4 gpio mode ipu上拉輸入 5 gpio mode ...

STM32輸入輸出理解

最近在看資料手冊的時候,發現在cortex m3裡,對於gpio的配置種類有8種之多 1 gpio mode ain 模擬輸入 2 gpio mode in floating 浮空輸入 3 gpio mode ipd 下拉輸入 4 gpio mode ipu 上拉輸入 5 gpio mode out...