stm32之GPIO
文章目錄
- GPIO工作方式
- GPIO的輸入工作模式
- GPIO的輸出工作模式
- 配置寄存器GPIOx_CRL/CRH
- 數(shù)據(jù)寄存器GPIOx_IDR/ODR
- 端口位設(shè)置/清除寄存器GPIOx_BSRR
- 清除寄存器GPIOx_BRR
- 庫(kù)函數(shù)版本
- 1、初始化函數(shù)
- 2.讀取電平函數(shù)
- 3.設(shè)置輸出函數(shù)
- 問(wèn)題:如果頭文件出現(xiàn)如圖x號(hào)
- 寄存器版
STM32 的 IO 口可以由軟件配置成如下 8 種模式:
1、輸入浮空
2、輸入上拉
3、輸入下拉
4、模擬輸入
5、開(kāi)漏輸出
6、推挽輸出
7、推挽式復(fù)用功能
8、開(kāi)漏復(fù)用功能
(1)GPIO_Mode_AIN 模擬輸入
(2)GPIO_Mode_IN_FLOATING 浮空輸入
(3)GPIO_Mode_IPD 下拉輸入
(4)GPIO_Mode_IPU 上拉輸入
(5)GPIO_Mode_Out_OD 開(kāi)漏輸出
(6)GPIO_Mode_Out_PP 推挽輸出
(7)GPIO_Mode_AF_OD 復(fù)用開(kāi)漏輸出
(8)GPIO_Mode_AF_PP 復(fù)用推挽輸出
STM32 的很多 IO 口都是 5V 兼容(FT)的(5v可以被識(shí)別為高電平),這些 IO 口在與 5V 電平的外設(shè)連接的時(shí)候很有優(yōu)勢(shì),具體哪些 IO 口是 5V 兼容的,可以從該芯片的數(shù)據(jù)手冊(cè)管腳描述章節(jié)查到(I/O Level 標(biāo) FT 的就是 5V 電平兼容的)。
GPIO工作方式
4種輸入模式:
輸入浮空
輸入上拉
輸入下拉
模擬輸入
4種輸出模式
開(kāi)漏輸出
開(kāi)漏復(fù)用功能
推挽式輸出
推挽式復(fù)用功能
3種最大翻轉(zhuǎn)速度:
-2MHZ
-10MHZ
-50MHZ
GPIO的輸入工作模式
兩個(gè)開(kāi)關(guān)不接通
上開(kāi)關(guān)接通
下拉電阻連上
常用于A(yíng)D轉(zhuǎn)換等
GPIO的輸出工作模式
內(nèi)部沒(méi)有驅(qū)動(dòng)能力
區(qū)別是由外設(shè)模塊決定輸出
推挽方式
推挽輸出
可以輸出強(qiáng)高低電平,連接數(shù)字器件
開(kāi)漏輸出
只可以輸出強(qiáng)低電平,高電平要靠外部電阻拉高,輸出端相當(dāng)于三極管的集電極,要得到高電平狀態(tài)需要山上拉電阻
配置寄存器GPIOx_CRL/CRH
GPIOx_CRL/CRH每四個(gè)位控制一個(gè)IO口,CRL控制標(biāo)號(hào)為0-7的口,CRH控制標(biāo)號(hào)為8-15的口
單個(gè)GPIO口的配置
數(shù)據(jù)寄存器GPIOx_IDR/ODR
IDR 是一個(gè)端口輸入數(shù)據(jù)寄存器,只用了低 16 位。該寄存器為只讀寄存器,并且只能以
16 位的形式讀出。
要想知道某個(gè) IO 口的狀態(tài),你只要讀這個(gè)寄存器,再看某個(gè)位的狀態(tài)就可以了。
ODR 是一個(gè)端口輸出數(shù)據(jù)寄存器,也只用了低 16 位。該寄存器為可讀寫(xiě),從該寄存器讀
出來(lái)的數(shù)據(jù)可以用于判斷當(dāng)前 IO 口的輸出狀態(tài)。
端口位設(shè)置/清除寄存器GPIOx_BSRR
設(shè)為0的位是不變的
和ODR不同。ODR如果設(shè)置為0,則是設(shè)置為0;
清除寄存器GPIOx_BRR
好了,寄存器學(xué)完了
開(kāi)始點(diǎn)燈!
庫(kù)函數(shù)版本
找到硬件連接位置
gpio頭文件函數(shù)
1、初始化函數(shù)
第一個(gè)參數(shù)指定io口
第二個(gè)定義速度
第三個(gè)定義模式
Pin參數(shù)
speed參數(shù)
mode參數(shù)
2.讀取電平函數(shù)
3.設(shè)置輸出函數(shù)
跑馬燈程序
1.使能IO口時(shí)鐘,調(diào)用RCC_APB2PeriphClockCmd函數(shù)
不同的IO組調(diào)用的時(shí)鐘使能函數(shù)不同
!!操作IO口之前都要使能相應(yīng)的時(shí)鐘,否則無(wú)法使用
1.RCC_APB2Periph參數(shù)
這里使能GPIOA口,將GPIOA的參數(shù)名RCC_APB2Periph_GPIOA引入就行了
2.NewState參數(shù)
使能或者不使能
程序:
或者
2.初始化IO口
調(diào)用函數(shù)GPIO_Init()
選擇推挽輸出
引腳選擇A8和D2
選擇50mhz
程序:
問(wèn)題:如果頭文件出現(xiàn)如圖x號(hào)
說(shuō)明沒(méi)有把頭文件路徑加進(jìn)去
添加頭文件路徑
添加一下路徑就行了
3.設(shè)置io口輸出電平
GPIO_SetBits()設(shè)置高電平
GPIO_ResetBits()設(shè)置低電平
參數(shù)傳入IO組和引腳
程序:
主函數(shù)
main
編譯沒(méi)問(wèn)題
下載
ok
寄存器版
步驟
1.使能IO口時(shí)鐘
2.初始化Io口模式
3.操作IO口
1.使能IO口時(shí)鐘
配置寄存器
RCC_APB2ENR
總結(jié)
以上是生活随笔為你收集整理的stm32之GPIO的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 电磁场与电磁波第四章 时变电磁场
- 下一篇: 四轴源码学习