STM32 關於GPIO的問題

2021-10-04 09:52:27 字數 4551 閱讀 2906

stm32 關於gpio的問題集錦

1、關於gpio

問:stm32的io口初始化為輸入浮空,那管腳是高電平還是低電平呢?

答:既不是高電平也不是低電平,懸空的意思是沒有使用的狀態。

2、有關stm32f103 埠復用的問題?

問:配置io口的頻率時,為什麼只給乙個io口配置?

答:gpio_initstructure.gpio_speed 這個結構體的成員始終為gpio_speed_50mhz 配置其他io口時也預設用50mhz 。

5、請問怎樣開始stm32w108cbu64晶元的pb5引腳外設輸入中斷?

問:有沒有這麼乙個例程,有開啟外設中斷和中斷函式的? 

最佳答案:看了下datasheet,pb5復用的功能為pb5, adc0, tim2clk, tim1msk,相關的中斷應該有,就看你配置為什麼外設了。

6、stm32f101 tamper pin 使用問題

問:請教各位大蝦:stm32f101 bkp當中的tamper pin該如何初始化!?

答:當tpal=0時:如果在啟動侵入檢測tamper引腳前(通過設定tpe位)該引腳已經為高電平,一旦啟動侵入檢測功能,則會產生乙個額外的侵入事件(儘管在tpe位置』1』後並沒有出現上公升沿)。 ● 當tpal=1時:如果在啟動侵入檢測引腳tamper前(通過設定tpe位)該引腳已經為低電平,一旦啟動侵入檢測功能,則會產生乙個額外的侵入事件(儘管在tpe位置』1』後並沒有出現下降沿)。 設定bkp_csr暫存器的tpie位為』1』,當檢測到侵入事件時就會產生乙個中斷。 詳見:bkp_csr

7、有關stm32f103 埠復用的問題?

問:在學習gpio時,遇到到埠復用問題一直不能明白,我舉個例子: 

pb6 pb7預設情況下是做普通io使用的,當我想用i2c1是,我開啟rcc_apb1periphclockcmd(rcc_apb1periph_i2c1,enable); 

rcc_apb2periphclockcmd(rcc_apb2periph_gpiob,enable); 

當我要使用i2c1的重定義時,我要開啟, 

rcc_apb1periphclockcmd(rcc_apb1periph_i2c1,enable); 

rcc_apb2periphclockcmd(rcc_apb2periph_gpiob,enable); 

rcc_apb2periphclockcmd(rcc_apb2periph_afio,enable); 

這樣理解對不對? 

有的人說當用的晶元自帶的外設時都要開啟 afio 時鐘,但我用到usart1時沒有開啟afio 時鐘,照樣能用usart,這是為什麼? 

總之問這個問題的根本原因是afio的時鐘要在什麼情況下開啟? 

答:1、串列埠必須要開啟afio時鐘,不然不能工作。可能你的初始化函式、rcc配置中有開啟的地方。 2、afio在你需要使用某一模組時,比如你想使用gpioc,這個時候要開啟gpioc模組的時鐘。 3、關閉i2c而不是關閉i2c模組的匯流排,如果你想使用普通模式,就要把i2c模組關閉以後,重新配置gpiob模組,就可以正常使用了。

7、stm32裡面,設定gpio_mode_ipu 有什麼用

問:中斷的配置裡面有:gpio_extilineconfig(gpio_portsourcegpiob, gpio_pinsource8);                                    gpio_extilineconfig(gpio_portsourcegpiob, gpio_pinsource9);

gpio口設定裡面有:        gpio_initstructure.gpio_pin   = gpio_pin_8 | gpio_pin_9;

gpio_initstructure.gpio_mode  = gpio_mode_ipu;

gpio_init(gpiob, &gpio_initstructure); 

我想問的是,這兩組設定必須同時存在嗎?

答:gpio_extilineconfig(gpio_portsourcegpiob, gpio_pinsource8);          

gpio_extilineconfig(gpio_portsourcegpiob, gpio_pinsource9);

stm32中這兩句話的意思是pb口的8、9管腳作為外部中斷的觸發訊號,所以pin_8和pin_9就要設定成輸入的模式,而gpio_initstructure.gpio_mode  = gpio_mode_ipu;中ipu是指io口的工作模式是帶上拉輸入,這個和具體的電路有關,總之如果選擇某個io口作為外部中斷的觸發訊號,就必須配置這個io口為輸入模式,不然無法觸發中斷

8、stm32中gpio口的最大輸出速度如何理解?

問:stm32中gpio口的最大輸出速度如何理解?

答:1、是這樣的,2m、10m和50m是指gpio口的取樣頻率。不知這樣理解對不對,我就是這樣做的。

2、我通過pb6採集80kbps/s的方波,通過中斷計採集,完全勝任。

9、stm32 gpio 弱上拉能做輸入輸出嗎

問:是gpio埠的資料存在odr暫存器,該資料與0x02異或再存在odr中嗎?

答:odr是stm32的io埠輸出資料暫存器,該暫存器31-16位始終讀為0,15-0位輸出資料。gpio->odr^=0x02 是輸出資料與0x02異或,即輸出資料的第二位如果與1相同,該位置0,反之出1,因此實現取反,輸出資料儲存在odr,每執行一次輸出資料的第二位取反一次。

10、gpio配置速度

問:stm32中的gpio如果設定成了輸入模式,還需要配置gpio_speed麼?

答:輸入模式可以不用配置速度,但是輸出模式必須確定最大輸出頻率。

11、stm32 gpio輸入電平檢測

問:gpio兩個引腳,模式都初始化為輸入弱上拉,給其中乙個引腳接4.7v的電壓,idr對應的值為1;給另乙個引腳接5.13v的電壓,idr對應的值卻為0;

答:檢查一下是否使能了相應gpio的時鐘,是否有這樣一句rcc_apb2periphclockcmd(rcc_apb2periph_gpiox,enable);有它就使能了,否則讀出的值不可**。

12、關於stm32中gpio暫存器idr和odr資料

問:stm32中gpio暫存器idr和odr資料是不是同步的?為什麼我用gpio_setbits函式設定管腳的時候,idr和odr同時改變,怎麼使得只改變odr的資料,而不改變idr的資料?謝謝!

答:idr暫存器的資料時實時反映io口的狀態,當然設定odr,io的狀態也跟著改變,除非強制人為地設定。比如,odr設定為1,而強制將對應的io口接地,這時idr就和odr不一致;或者將odr設定0,而強制降對應io口接vcc,這時也不一致。

13、用stm32,有六個gpio口(不在同一組)要相同訊號輸出,請問怎麼設定?

問:例如gpioe的pin10重對映到tim1,設定好tim1的pwm訊號輸出;其他的io口如gpioa的pin5、gpioa的pin6、gpiob的pin5、gpiob的pin6、gpioc的pin5也要輸出與gpioe的pin10相同的訊號,請問大俠怎麼設定?

答:用定時器中斷吧,把pwm的脈寬配置成定時中斷,把gpio引腳都配置好,相應時鐘都使能,然後到定時器中斷函式中做相同的處理。

14、關於gpio_writebit與gpio_setbits

問:gpio_writebit與gpio_setbits有什麼區別

答:可以用man命令檢視區別

man ioctl :

name

ioctl - control device

man write :

name

write - write to a file descriptor

15、關於gpio_inittypedef gpio_initstructure

問:這句話什麼意思?

答:宣告乙個結構體,名字是gpio_initstructure,結構體原型由gpio_inittypedef 確定,stm32裡面初始化gpio用的吧。。設定完了gpio_initstructure裡面的內容後在gpio_init (gpio_typedef 。

*gpiox, gpio_inittypedef *gpio_initstruct)裡面呼叫,比如初始化pa口,就是gpio_init (gpioa, &gpio_initstructure),括號裡後面那個就是你問題裡面宣告的那個結構體。

16、關於 stm32的io口能不能像51的io口那樣直接控制px口輸出

問:stm32晶元 io埠配置為浮空輸入時,能不能讀取埠上的電平狀態。

答:stm32的輸入狀態暫存器gpiox_idr和輸出狀態暫存器和gpiox_odr的讀取是不受埠配置影響的。 

18、stm32 jtag和普通io復用問題

stm32學習筆記 GPIO

2011 03 06 15 10 stm32基本上每個引腳都有8種配置模式 浮空輸入 帶弱上拉輸入 帶弱下拉輸入 模擬輸入 推挽輸出 開漏輸出 復用推挽輸出 復用開漏輸出 通常有5種方式使用某個引腳功能,它們的配置方式如下 1 作為普通gpio輸入 根據需要配置該引腳為浮空輸入 帶弱上拉輸入或帶弱下...

STM32控制GPIO講解

借鑑 借鑑一。gpio簡介 stm32的io口有8中配置方式 輸入浮空輸入gpio in floating 浮空輸入,可以做key識別,rx1 帶上拉輸入gpio ipu io內部上拉電阻輸入 帶下拉輸入gpio ipd io內部下拉電阻輸入 模擬輸入gpio ain 應用adc模擬輸入,或者低功耗...

STM32開發 GPIO詳解

之前有簡單講過gpio工作模式和暫存器,還是有點沒搞明白。這次需要全方位的看一下了。可知 stm32f105rc 一共有4組io口 一共16x3 3 51個io gpioa0 a15 gpiob0 b15 gpioc0 c15 gpiod0 d2 stm32f105rc使用gpio埠號為 gpioa...