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