日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

stm32之GPIO

發(fā)布時間:2025/4/16 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stm32之GPIO 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

      • GPIO工作方式
      • GPIO的輸入工作模式
      • GPIO的輸出工作模式
        • 配置寄存器GPIOx_CRL/CRH
        • 數(shù)據(jù)寄存器GPIOx_IDR/ODR
        • 端口位設(shè)置/清除寄存器GPIOx_BSRR
        • 清除寄存器GPIOx_BRR
      • 庫函數(shù)版本
        • 1、初始化函數(shù)
        • 2.讀取電平函數(shù)
        • 3.設(shè)置輸出函數(shù)
        • 問題:如果頭文件出現(xiàn)如圖x號
      • 寄存器版

STM32 的 IO 口可以由軟件配置成如下 8 種模式:
1、輸入浮空
2、輸入上拉
3、輸入下拉
4、模擬輸入
5、開漏輸出
6、推挽輸出
7、推挽式復(fù)用功能
8、開漏復(fù)用功能

(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 復(fù)用開漏輸出

(8)GPIO_Mode_AF_PP 復(fù)用推挽輸出

STM32 的很多 IO 口都是 5V 兼容(FT)的(5v可以被識別為高電平),這些 IO 口在與 5V 電平的外設(shè)連接的時候很有優(yōu)勢,具體哪些 IO 口是 5V 兼容的,可以從該芯片的數(shù)據(jù)手冊管腳描述章節(jié)查到(I/O Level 標(biāo) FT 的就是 5V 電平兼容的)。

GPIO工作方式

4種輸入模式:
輸入浮空
輸入上拉
輸入下拉
模擬輸入

4種輸出模式
開漏輸出
開漏復(fù)用功能
推挽式輸出
推挽式復(fù)用功能

3種最大翻轉(zhuǎn)速度:
-2MHZ
-10MHZ
-50MHZ

GPIO的輸入工作模式


兩個開關(guān)不接通


上開關(guān)接通

下拉電阻連上


常用于AD轉(zhuǎn)換等

GPIO的輸出工作模式


內(nèi)部沒有驅(qū)動能力

區(qū)別是由外設(shè)模塊決定輸出

推挽方式

推挽輸出
可以輸出強(qiáng)高低電平,連接數(shù)字器件
開漏輸出
只可以輸出強(qiáng)低電平,高電平要靠外部電阻拉高,輸出端相當(dāng)于三極管的集電極,要得到高電平狀態(tài)需要山上拉電阻

配置寄存器GPIOx_CRL/CRH

GPIOx_CRL/CRH每四個位控制一個IO口,CRL控制標(biāo)號為0-7的口,CRH控制標(biāo)號為8-15的口

單個GPIO口的配置

數(shù)據(jù)寄存器GPIOx_IDR/ODR

IDR 是一個端口輸入數(shù)據(jù)寄存器,只用了低 16 位。該寄存器為只讀寄存器,并且只能以
16 位的形式讀出。

要想知道某個 IO 口的狀態(tài),你只要讀這個寄存器,再看某個位的狀態(tài)就可以了。

ODR 是一個端口輸出數(shù)據(jù)寄存器,也只用了低 16 位。該寄存器為可讀寫,從該寄存器讀
出來的數(shù)據(jù)可以用于判斷當(dāng)前 IO 口的輸出狀態(tài)。

端口位設(shè)置/清除寄存器GPIOx_BSRR



設(shè)為0的位是不變的
和ODR不同。ODR如果設(shè)置為0,則是設(shè)置為0;

清除寄存器GPIOx_BRR


好了,寄存器學(xué)完了
開始點(diǎn)燈!

庫函數(shù)版本

找到硬件連接位置

gpio頭文件函數(shù)


1、初始化函數(shù)




第一個參數(shù)指定io口
第二個定義速度
第三個定義模式


Pin參數(shù)

speed參數(shù)

mode參數(shù)

2.讀取電平函數(shù)

3.設(shè)置輸出函數(shù)


跑馬燈程序
1.使能IO口時鐘,調(diào)用RCC_APB2PeriphClockCmd函數(shù)
不同的IO組調(diào)用的時鐘使能函數(shù)不同
!!操作IO口之前都要使能相應(yīng)的時鐘,否則無法使用


1.RCC_APB2Periph參數(shù)

這里使能GPIOA口,將GPIOA的參數(shù)名RCC_APB2Periph_GPIOA引入就行了
2.NewState參數(shù)

使能或者不使能

程序:

或者

2.初始化IO口
調(diào)用函數(shù)GPIO_Init()

選擇推挽輸出

引腳選擇A8和D2

選擇50mhz
程序:

問題:如果頭文件出現(xiàn)如圖x號

說明沒有把頭文件路徑加進(jìn)去

添加頭文件路徑


添加一下路徑就行了

3.設(shè)置io口輸出電平
GPIO_SetBits()設(shè)置高電平

GPIO_ResetBits()設(shè)置低電平
參數(shù)傳入IO組和引腳
程序:

主函數(shù)
main

編譯沒問題

下載


ok

寄存器版

步驟
1.使能IO口時鐘
2.初始化Io口模式
3.操作IO口

1.使能IO口時鐘
配置寄存器
RCC_APB2ENR

總結(jié)

以上是生活随笔為你收集整理的stm32之GPIO的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。