操作gpio口
第一次寫部落格,寫著玩玩。正好剛剛學32,寫寫對gpio韌體庫的學習心得
使能 io 口時鐘。呼叫函式 void rcc_apb2periphclockcmd(uint32_t rcc_apb2periph, functionalstate newstate)
void
rcc_apb2periphclockcmd
(uint32_t rcc_apb2periph, functionalstate newstate)
第乙個引數在庫函式中對gpio的定義有
#define rcc_apb2periph_gpioa ((uint32_t)0x00000004)
#define rcc_apb2periph_gpiob ((uint32_t)0x00000008)
#define rcc_apb2periph_gpioc ((uint32_t)0x00000010)
#define rcc_apb2periph_gpiod ((uint32_t)0x00000020)
#define rcc_apb2periph_gpioe ((uint32_t)0x00000040)
#define rcc_apb2periph_gpiof ((uint32_t)0x00000080)
#define rcc_apb2periph_gpiog ((uint32_t)0x00000100)
第二個引數 可選擇disable 或 enable,設定是否使能io口
在韌體庫開發中, 操作暫存器 crh 和 crl 來配置 io 口的模式和速度是通過 gpio 初始化函式完成的。
void
gpio_init
(gpio_typedef* gpiox, gpio_inittypedef* gpio_initstruct);
這個函式有兩個引數, 第乙個引數是用來指定 要初始化的gpio口,可取值 gpioa~gpiog。第二個引數為初始化引數結構體指標,該指標指向gpio_inittypedef結構體,我們可以在stm32f10x_gpio.c檔案中檢視該結構體的定義
typedef
struct
gpio_inittypedef;
結構體各變數的賦值範圍如下
gpio口引腳(0-15)
gpio口速度
typedef
enum
gpiospeed_typedef;
gpio口輸出模式
typedef
enum
gpiomode_typedef;
gpio_inittypedef gpio_initstructure;
gpio_initstructure.gpio_pin = gpio_pin_3;
//對pa.3 埠配置
gpio_initstructure.gpio_mode = gpio_mode_out_pp;
//設定為推挽輸出
gpio_initstructure.gpio_speed = gpio_speed_50mhz;
//設定速度 50mhz
gpio_init
(gpioa,
&gpio_initstructure)
;//根據設定引數配置 gpio
在韌體庫中操作 idr 暫存器讀取 io 埠資料是通過 gpio_readinputdatabit 函式實現的:
uint8_t gpio_readinputdatabit(gpio_typedef* gpiox, uint16_t gpio_pin)
ps:讀取pa.3口狀態
uint8_t gpio_readinputdatabit(gpioa, gpio_3)
在韌體庫中設定 odr 暫存器的值來控制 io 口的輸出狀態是通過函式 gpio_write 來實現
的:void gpio_write(gpio_typedef* gpiox, uint16_t portval);
ps:控制pa.3口為高電平
uint8_t gpio_readinputdatabit(gpioa, 0000000000000100)
該函式一般用於控制多個埠。
在 stm32 韌體庫中, 通過 bsrr 和 brr 暫存器設定單個 gpio 埠輸出是通過函式
gpio_setbits()和函式 gpio_resetbits()來完成的。
void
gpio_setbits
(gpio_typedef* gpiox, uint16_t gpio_pin)
;void
gpio_resetbits
(gpio_typedef* gpiox, uint16_t gpio_pin)
ps:
設定 gpioa.3 輸出高電平:
gpio_setbits
(gpioa, gpio_pin_3)
;
反之如果要設定 gpioa.3 輸出位 低電平:
gpio_resetbits (gpioa, gpio_pin_3)
;
注:本文參考stm32庫函式中文參考手冊 STM32GPIO部分介紹
最近在老師交給了乙個專案,需要用到stm32微控制器,這裡就在學習的過程中所注意到的一些地方或細節部分記錄了下來,筆者所使用的是stm32f407zgt6晶元 探索者 檢視晶元的資料手冊 這個 對每個i o口的功能進行了很詳細的介紹。每個i o除了作為i o使用外,還可以作為其他的復用。已以pe2口...
STM32 GPIO模式總結
4種輸入模式 浮空輸入 上拉輸入 下拉輸入 模擬輸入 4種輸出模式 開漏輸出 復用開漏輸出 推挽輸出 復用推挽輸出 3種最大輸出速度 2mhz 10mhz 50mhz 浮空輸入模式 1 外部通過io口輸入電平,外部電平通過上下拉部分 浮空模式下都關閉,既無 上拉也無下拉電阻 2 傳輸到施密特觸發器 ...
STM32 GPIO簡單介紹
2018 3 28 stm32 1.簡單配置暫存器環境 2.ministm32f103rc 51個io口 1.擁有著4組io口 gpioa0 a15 gpiob0 b15 gpioc0 c15 gpiod0 d2 2.gpio的工作方式 四種輸入模式,四種輸出模式 輸入方式 1.輸入浮空模式 由引腳...