stm32之GPIO


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
ok

寄存器版

步骤
1.使能IO口时钟
2.初始化Io口模式
3.操作IO口

1.使能IO口时钟
配置寄存器
RCC_APB2ENR
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值