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 电平兼容的)。
stm32之GPIO

GPIO工作方式

4种输入模式:
输入浮空
输入上拉
输入下拉
模拟输入

4种输出模式
开漏输出
开漏复用功能
推挽式输出
推挽式复用功能

3种最大翻转速度:
-2MHZ
-10MHZ
-50MHZ

GPIO的输入工作模式

stm32之GPIO
两个开关不接通

stm32之GPIO
上开关接通
stm32之GPIO
下拉电阻连上

stm32之GPIO
常用于AD转换等

GPIO的输出工作模式

stm32之GPIO
内部没有驱动能力
stm32之GPIO
区别是由外设模块决定输出
stm32之GPIO
推挽方式
stm32之GPIO
推挽输出
可以输出强高低电平,连接数字器件
开漏输出
只可以输出强低电平,高电平要靠外部电阻拉高,输出端相当于三极管的集电极,要得到高电平状态需要山上拉电阻

stm32之GPIO

配置寄存器GPIOx_CRL/CRH

GPIOx_CRL/CRH每四个位控制一个IO口,CRL控制标号为0-7的口,CRH控制标号为8-15的口
stm32之GPIO

单个GPIO口的配置
stm32之GPIO

stm32之GPIO

数据寄存器GPIOx_IDR/ODR

IDR 是一个端口输入数据寄存器,只用了低 16 位。该寄存器为只读寄存器,并且只能以
16 位的形式读出。
stm32之GPIO
要想知道某个 IO 口的状态,你只要读这个寄存器,再看某个位的状态就可以了。

ODR 是一个端口输出数据寄存器,也只用了低 16 位。该寄存器为可读写,从该寄存器读
出来的数据可以用于判断当前 IO 口的输出状态。
stm32之GPIO

端口位设置/清除寄存器GPIOx_BSRR

stm32之GPIO
stm32之GPIO
设为0的位是不变的
和ODR不同。ODR如果设置为0,则是设置为0;

清除寄存器GPIOx_BRR

stm32之GPIO
好了,寄存器学完了
开始点灯!

库函数版本

找到硬件连接位置
stm32之GPIO

gpio头文件函数
stm32之GPIO
stm32之GPIO
stm32之GPIO

1、初始化函数

stm32之GPIO
stm32之GPIO
stm32之GPIO

stm32之GPIO
第一个参数指定io口
第二个定义速度
第三个定义模式
stm32之GPIO
stm32之GPIO
Pin参数
stm32之GPIO
stm32之GPIO

speed参数
stm32之GPIO
stm32之GPIO

mode参数
stm32之GPIO
stm32之GPIO

2.读取电平函数

stm32之GPIO

3.设置输出函数

stm32之GPIO
跑马灯程序
1.使能IO口时钟,调用RCC_APB2PeriphClockCmd函数
不同的IO组调用的时钟使能函数不同
!!操作IO口之前都要使能相应的时钟,否则无法使用
stm32之GPIO
stm32之GPIO
1.RCC_APB2Periph参数
stm32之GPIO
这里使能GPIOA口,将GPIOA的参数名RCC_APB2Periph_GPIOA引入就行了
2.NewState参数
stm32之GPIO
使能或者不使能

程序:
stm32之GPIO
或者
stm32之GPIO

2.初始化IO口
调用函数GPIO_Init()
stm32之GPIO
选择推挽输出
stm32之GPIO
引脚选择A8和D2
stm32之GPIO
选择50mhz
程序:
stm32之GPIO

问题:如果头文件出现如图x号

说明没有把头文件路径加进去
stm32之GPIO
添加头文件路径
stm32之GPIO
stm32之GPIO
添加一下路径就行了

3.设置io口输出电平
GPIO_SetBits()设置高电平
stm32之GPIO
GPIO_ResetBits()设置低电平stm32之GPIO
参数传入IO组和引脚
程序:
stm32之GPIO

主函数
main
stm32之GPIO
编译没问题
stm32之GPIO
下载
stm32之GPIO

stm32之GPIO
ok

寄存器版

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

1.使能IO口时钟
配置寄存器
RCC_APB2ENR
stm32之GPIO

相关文章: