STM32總結之GPIO 常用庫函式

2021-09-23 20:45:54 字數 2818 閱讀 8894

配置相關函式

1.void  gpio_init  (gpio_typedef* gpiox,gpio_inittypedef* gpio_initstruct)

函式解釋:gpio的初始化函式,該函式的作用是對io進行初始化。

引數:(1)gpiox,gpio的分組,如 gpioa,gpiob,gpioc等的巨集定義。

gpio_pin:指定具體的io腳,如gpio_pin_0,gpio_pin_1這樣的巨集定義。

gpio_mode:指定gpio的模式,有八種模式:

gpio_mode_ain

gpio_mode_in_floating

gpio_mode_ipd

gpio_mode_ipu

gpio_mode_out_od

gpio_mode_out_pp

gpio_mode_af_od

gpio_mode_af_pp

gpio_speed:指定io最快翻轉速度,也就是當使用io產生頻率的最大速度。有四種模式:

gpio_speed_10mhz,

gpio_speed_2mhz

gpio_speed_50mhz

gpio的讀寫函式

1.uint8_t  gpio_readinputdatabit  (gpio_typedef* gpiox , uint16_t gpio_pin)

函式解釋:讀取io輸入管腳的值

引數:(1)gpiox,gpio的分組,如 gpioa,gpiob,gpioc等的巨集定義。

(2)gpio_pin:指定具體的io腳,如gpio_pin_0,gpio_pin_1這樣的巨集定義。

返回值:輸入管腳的值 bit_set(高電平),bit_reset(低電平)

2.uint16_t  gpio_readinputdata (gpio_typedef* gpiox )

函式解釋:讀取輸入io資料,該函式用於讀取乙個io分組的所有資料

引數:gpiox,gpio的分組,如 gpioa,gpiob,gpioc等的巨集定義。

返回值:乙個io埠的所有資料(輸入狀態)

3.uint8_t  gpio_readoutputdatabit  (gpio_typedef* gpiox , uint16_t gpio_pin)

函式解釋:讀取io輸出管腳的值

引數:(1)gpiox,gpio的分組,如 gpioa,gpiob,gpioc等的巨集定義。

(2)  gpio_pin:指定具體的io腳,如gpio_pin_0,gpio_pin_1這樣的巨集定義。

返回值:輸出管腳的值 bit_set(高電平),bit_reset(低電平)

4.uint16_t  gpio_readoutputdata (gpio_typedef* gpiox )

函式解釋:讀取輸出io資料,該函式用於讀取乙個io分組的所有資料

引數:gpiox,gpio的分組,如 gpioa,gpiob,gpioc等的巨集定義。

返回值:乙個io埠的所有資料(輸出狀態)

5.void  gpio_setbits(gpio_typedef* gpiox,uint16_t  gpio_pin)

函式解釋:對io管腳進行置位(輸出高電平)。這個函式使用gpiox_bsrr暫存器來實現原子讀或者修改操作。在這種情況下,在讀和修改訪問時發生乙個irq中斷是沒有危險的。

引數:(1)gpiox,gpio的分組,如 gpioa,gpiob,gpioc等的巨集定義。

(2)gpio_pin:指定具體的io腳,如gpio_pin_0,gpio_pin_1這樣的巨集定義。

6.void  gpio_resetbits(gpio_typedef* gpiox,uint16_t  gpio_pin)

函式解釋:對io管腳進行復位(輸出低電平)。這個函式使用gpiox_bsrr暫存器來實現原子讀或者修改操作。在這種情況下,在讀和修改訪問時發生乙個irq中斷是沒有危險的。

引數:(1)gpiox,gpio的分組,如 gpioa,gpiob,gpioc等的巨集定義。

(2)gpio_pin:指定具體的io腳,如gpio_pin_0,gpio_pin_1這樣的巨集定義。

7.void  gpio_writebit(gpio_typedef* gpiox,uint16_t  gpio_pin,bitactionbitval)

函式解釋:對某一位進行寫入操作。

引數:(1)gpiox,gpio的分組,如 gpioa,gpiob,gpioc等的巨集定義。

(2)gpio_pin:指定具體的io腳,如gpio_pin_0,gpio_pin_1這樣的巨集定義。

(3)bitval:寫入高電平或者低電平(bit_reset:寫入低電平 bit_set:寫入高電平)

8.void  gpio_write(gpio_typedef* gpiox,uint16_t  portval)

函式解釋:對gpio埠進行寫入操作,適用於對統一埠的多個管腳的寫入。

引數:(1)gpiox,gpio的分組,如 gpioa,gpiob,gpioc等的巨集定義。

(2)bitval:寫入高電平或者低電平(bit_reset:寫入低電平 bit_set:寫入高電平)

9.void  gpio_togglebits(gpio_typedef* gpiox,uint16_t  gpio_pin)

函式解釋:翻轉指定的gpio口,如果當前io是高電平,則變為低電平。如果當前io是低電平,則變為高電平。

引數:(1)gpiox,gpio的分組,如 gpioa,gpiob,gpioc等的巨集定義。

(2)gpio_pin:指定具體的io腳,如gpio_pin_0,gpio_pin_1這樣的巨集定義。

STM32總結之GPIO程式設計過程

用暫存器點亮led的過程 1 通過原理圖找到要點亮的led燈對應的gpio口 2.通過stm32手冊找到要操作的暫存器,找到這個gpio的基位址,基位址 位址偏移 目標暫存器的位址 3.編碼 1.開啟對應的gpio的時鐘。2.通過操作crl暫存器將對應的gpio口設定為推挽輸出模式,並設定一 個翻轉...

STM32的GPIO開發總結

gpio開發總結 gpio模式 a 浮空輸入 in floating b 帶上拉輸入 ipu in push up c 帶下拉輸入 ipd in push down d 模擬輸入 ain anolog in e 開漏輸出 out pd od 代表開漏,既open drain,oc代表開集,open ...

stm32的GPIO之標準庫程式設計

gpio typedef和afio typedef,在檔案 stm32f10x map.h 中定義如下 typedef struct gpio typedef typedef struct afio typedef gpio inittypedef定義於檔案 stm32f10x gpio.h typ...