天天看點

STM32學習筆記(二 GPIO學習 1 GPIO工作原理 )

STM32引腳說明

正點原子旗艦店的精英闆STM32F103ZET6:

有7組IO口 組名 分别是GPIOA 、GPIOB……GPIOG

每組IO口有16個IO口 編号為0到15

一共16X7=112個IO,外加2個PH0和PH1,一共114個IO口。

STM32學習筆記(二 GPIO學習 1 GPIO工作原理 )

1.1 GPIO工作方式 參考連結

STM32學習筆記(二 GPIO學習 1 GPIO工作原理 )

四種輸入模式:

(1)GPIO_Mode_IN_FLOATING 浮空輸入

複位上電的時候,引腳不确定電平的高低 此模式最常用的是檢測按鍵,可以接收高低電平。但容易被幹擾

(2) GPIO_Mode_IPU 上拉輸入

輸入的信号轉為0或者1,強制上拉,一般是為了輸入強高電平 此模式檢測到電平預設為高,可以檢測到由高到低的電平變化。

(3) GPIO_Mode_IPD 下拉輸入

輸入的信号轉為0或者1,強制下拉,一般是為了輸入強低電平 此模式檢測到電平預設為低,可以檢測到由低到高的電平變化。

(4) GPIO_Mode_AIN 模拟輸入

将IO口作為模拟輸入接口,輸入的可能是變化的值,接收外部的模拟信号輸入,此模式,可以檢測外部輸入的模拟電壓 可以檢測電壓值,隻要不高于Vcc即可。

四種輸出模式:

(5) GPIO_Mode_Out_OD 開漏輸出(帶上拉或者下拉)

開漏輸出用于輸出低電平,高電平靠外部上拉電阻電壓決定,适用于快速切換電壓的外部電路結構。

(6) GPIO_Mode_AF_OD 複用開漏輸出(帶上拉或者下拉)

複用功能,不隻是單純的作為輸入輸出,可以作為其他功能的引腳:序列槽、I2C、SPI,要得到高電平狀态需要上拉電阻才行 複用 IIC 時候選擇複用開漏輸出,因為開漏輸出可以“線與”。

(7) GPIO_Mode_Out_PP 推挽輸出(帶上拉或者下拉)

IO 輸出 0-接 GND, IO 輸出 1 -接 VCC,讀輸入值是未知的,輸出0,就一定是0,輸出1就一定是1 推挽輸出用于輸出高低電平,是最常用的模式

(8) GPIO_Mode_AF_PP 複用推挽輸出(帶上拉或者下拉)

複用功能,不隻是單純的作為輸入輸出,可以作為其他功能的引腳:序列槽、I2C、SPI,輸出0,就一定是0,輸出1就一定是1 其他複用比如 SPI 等可以選擇複用推挽輸出。

相關參考連結有圖

三種最大翻轉速度

2MHZ

10MHZ

50MHZ

翻轉速度指:輸入/輸出寄存器的0 1 值 反映到外部引腳 (APB2上)高低電平的速度。

1.2 GPIO相關配置寄存器

寄存器簡介

寄存器是 CPU 内部的構造,它主要用于資訊的存儲,可用來暫存指令、資料和位址。

每組IO口下含有7個寄存器

STM32學習筆記(二 GPIO學習 1 GPIO工作原理 )
STM32學習筆記(二 GPIO學習 1 GPIO工作原理 )

具體介紹: 參考連結

(1)GPIOx_CRL(端口配置低寄存器)和GPIOx_CRH(端口配置高寄存器)

每四個位控制一個IO口

這兩個寄存器都是32位

32/4=8 也就是每個寄存器隻管8個IO口

即 CRL控制0-7口 CRH控制8-15口

(2)GPIOx_IDR(端口輸入資料寄存器)

IDR寄存器低16位(一共32位,0到31 低16位意思是指0到15位)低16位中每個位控制一個IO口,16到31口保留不用始終為0

(3)GPIOx_ODR(端口輸出資料寄存器)

低16位每個位控制一個IO口的輸出電平高或低

(4)GPIOx_BSRR(端口位設定/清除寄存器)

BSRR寄存器低16位,對應位設定為1,那麼IO口輸出為高電平,對應位設定為0,對應IO口不産生任何影響。高16位作用相反。

(5)GPIOx_BRR(端口位清除寄存器)和GPIOx_LCKR(端口位鎖定寄存器)

這倆不太常用不多做解釋,常用的是GPIOx_BSRR.

1.3 端口複用

複用: 一些端口不僅僅可以作為通用IO口,還可以複用為一些外設引腳。

比如PA9 PA10可以複用為STM32的序列槽1引腳

作用: 最大限度的利用端口

STM32學習筆記(二 GPIO學習 1 GPIO工作原理 )

1.4 端口重映射

端口重映射: 就是可以把某些功能引腳映射到其他引腳

比如序列槽1預設引腳是PA9 PA10可以通過配置重映射射到PB6 PB7

作用: 友善布線

STM32學習筆記(二 GPIO學習 1 GPIO工作原理 )

繼續閱讀