欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

stm32之GPIO

发布时间:2025/4/16 编程问答 47 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。