GPIO接口簡介
通用輸入輸出接口GPIO是嵌入式系統、單片機開發過程最常用的接口,用戶可以通過編程靈活的對接口進行控制,實現對電路板上LED、數碼管、按鍵等常用設備控制驅動,也可以作為串口的數據收發管腳,或AD的接口等復用功能使用。因此其作用和功能是非常重要的。
GPIO功能復用
GPIO復用是指將一個GPIO引腳用于多種不同的功能。在現代電子設備中,GPIO引腳的數量通常是有限的,因此,為了實現更多的功能,需要使用GPIO復用技術。(具體復用功能查看《STM32F0數據手冊》)
GPIO寄存器介紹
STM32F051 - GPIO常用寄存器:
4個32位配置寄存器:
?????????GPIOx_MODER、GPIOx_OTYPER、? GPIOx_OSPEEDR 、?GPIOx_PUPDR
2個32位數據寄存器:
????????GPIOx_IDR 、GPIOx_ODR?
1個32位置位 / 復位寄存器
? ? ? ? GPIOx_BSRR;
2個32位復用功能配置集訓期
? ? ? ? GPIOx_AFRH、GPIOx_AFRL
注:每一組GPIO端口都有一套上述的寄存器去配置他自己的功能;
GPIO工作原理圖
?
GPIO寄存器OTYPEP:
位?31:16 ——保留,必須保持為復位值。
位15:0??OTy[1:0] ,端口x的配置為(y = 0 ..15)這些位可由軟件寫來配置I/O口的輸出類型
????????0:推挽輸出(復位狀態),正常狀況下使用
? ? ? ? ? ? ? ? 此模式正常輸出高低電平,P-MOS管工作輸出高電平:N-MOS管工作輸出低電平;?
????????1:開漏輸出 , 適用于電流型驅動
? ? ? ? ? ? ? ? 此模式下有可能得不到高電平,因為此狀態下P-MOS管不工作,若想得到高電平可配置上下拉電阻實現。
? GPIO寄存器OSPEEDR:
? ? ? ?
? ? ? ? ? ??
? GPIO 口輸出速度寄存器 (GPIOx_OSPEEDR) (x = A..D,F)
? ? ?偏移地址: 0x08
? ? ?復位值: 0x0000 0000
?GPIO寄存器PUPDR:
?
?? GPIO 口上拉 / 下拉寄存器 (GPIOx_PUPDR) (x = A..D,F)
? ? ?偏移地址: 0x0C
? ? ?復位值:
? ? ● 0x2400 0000 端口 A
? ? ● 0x0000 0000 其它端口
GPIO寄存器IDR:
?
?? GPIO 端口輸入數據寄存器 (GPIOx_IDR) (x = A..D,F)
? ? ?偏移地址: 0x10
? ? ?復位值: 0x0000 XXXX (X 表明不定 )
GPIO寄存器ODR:
?
?
? GPIO 端口輸出數據寄存器 (GPIOx_ODR) (x = A..D,F)
? ? ?偏移地址: 0x14
? ? ?復位值: 0x0000 0000
?
GPIO寄存器BSRR:
?
?? GPIO 端口置位 / 復位寄存器 (GPIOx_BSRR) (x = A..D,F)
? ? ?偏移地址: 0x18
? ? ?復位值: 0x0000 0000
GPIO寄存器AFRL:
?
?? GPIO 復用功能低位寄存器 (GPIOx_AFRL) (x = A..B)
? ? ? 偏移地址: 0x20
? ? ? 復位值: 0x0000 0000
GPIO寄存器AFRH:
- ?
?
? GPIO 復用功能低位寄存器 (GPIOx_AFRH) (x = A..B)
? ? ? 偏移地址: 0x24
? ? ? 復位值: 0x0000 0000
?