關於GPIO的內部結構及程式設計步驟

2021-10-05 08:55:23 字數 1533 閱讀 2631

當按鍵外接電源,按下按鍵io輸出為高電平時,此時需要設定未按下時為低電平,所以需要配置成下拉輸入

當按鍵外接電源,按下按鍵io輸出為低電平時,此時需要設定未按下時為高電平,所以需要配置成上拉輸入

推挽輸出既能輸出高電平也能輸出低電平。

什麼叫埠復用?

io口既可以用作通用輸入輸出高低電平,也可以通過配置相應引腳作為其他功能使用,

如00時通用io口,01時定時器通道輸出,11時串列埠通訊等。

作用:最大限度利用埠資源。

什麼是埠重對映?

就是把某些功能引腳對映到其他引腳。

如pa9,pa10的串列埠功能可以對映到pb6,pb7上面,即可以通過配置引腳使pb6,pb7具有串列埠功能。

作用:佈線方便

每組gpiox有16個io口pa0-pa15,配置乙個io口需要4位,則每組需要64位,則需要2個32位暫存器來配置。

如埠配置低暫存器gpiox_crl和高暫存器gpiox_crh,每個暫存器有32個位,其中每四個位控制乙個io口,

crl控制0-7,crh控制8-15的io口。下面乙個格代表兩位,共32位。

所有io口都可以作為中斷輸入。

用韌體庫點亮led的過程(以pb0為例)

1.定義乙個gpio結構體(gpio_inittypedef)型別的變數

gpio_inittypedef gpio_initstructure;

2.開啟gpio的時鐘

rcc_apb2periphclockcmd(rcc_apb2periph_gpiob, enable);

3.將gpio結構體變數的成員進行賦值:埠、模式、翻轉速度(定義的內容位於gpio.**件)

gpiob_pin0.gpio_pin = gpio_pin_0;

gpiob_pin0.gpio_mode = gpio_mode_out_pp;

gpiob_pin0.gpio_speed = gpio_speed_50mhz;

4.gpio初始化

gpio_init(gpiob, &gpio_initstructure);

5.將相應的引腳置高、置低

gpio_resetbits(gpiob, gpio_pin_0);

gpio_setbits(gpiob, gpio_pin_0);

STM32的GPIO內部結構及相關暫存器

學完大二上學期51微控制器課程的寒假,在家我就開始搗鼓stm32了,記得那時候接觸stm32感覺它很難,20多天下來就學習了rcc時鐘體系和gpio控制模組,開學後又開始忙一些有的沒的,stm32的學習也擱置了,以至於後來跟學校當時在念博的老師交流時,我是這樣描述我的stm32開發水平的 我只會用g...

STM32的GPIO內部結構及相關暫存器

學完大二上學期51微控制器課程的寒假,在家我就開始搗鼓stm32了,記得那時候接觸stm32感覺它很難,20多天下來就學習了rcc時鐘體系和gpio控制模組,開學後又開始忙一些有的沒的,stm32的學習也擱置了,以至於後來跟學校當時在念博的老師交流時,我是這樣描述我的stm32開發水平的 我只會用g...

ios 類的內部結構

1.class 和 object 的定義 an opaque type that represents an objective c class.typedefstructobjc class class represents an instance of a class.structobjc ob...