STM32引腳說明
正點原子旗艦店的精英闆STM32F103ZET6:
有7組IO口 組名 分别是GPIOA 、GPIOB……GPIOG
每組IO口有16個IO口 編号為0到15
一共16X7=112個IO,外加2個PH0和PH1,一共114個IO口。
1.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個寄存器
具體介紹: 參考連結
(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引腳
作用: 最大限度的利用端口
1.4 端口重映射
端口重映射: 就是可以把某些功能引腳映射到其他引腳
比如序列槽1預設引腳是PA9 PA10可以通過配置重映射射到PB6 PB7
作用: 友善布線