stm32GPIO简介

GPIO概述

• GPIO(GENERAL PURPOSE I/O PORTS)意思为通用输入/输出端口,可以为CPU提供 数字输入输出功能。通俗地说,就是一些引脚,CPU可以通过它们输出高低电平或者通过 它们读入引脚的状态-是高电平或是低电平 • 可以通过软件对GPIO接口进行灵活配置和操纵,包括:
① 输入输出的方向配置
② 引脚功能复用
③ 引脚的重新映射
④ 是否可以申请中断
⑤ PWM输出等
• STM32不同的型号、不同的封装,GPIO引脚的数目不同。
• STM32F103ZET共有7组GPIO,PA-PG,每组16个引脚(0~15)。
• 每组可作为一个16BIT并口处理,也可以按16个1BIT的IO口处理。
• AFIO (ALTERNATE-FUNCTION I/OS),管脚除了作为GPIO外,还可以复用为其他功 能的输入输出引脚,如可作为串口通信、ADC、定时器引脚等等。
输入模式共8种:
① 浮空输入: In_Floating
② 上/下拉输入: IPU (In Push_Up)
③ 下拉输入: IPD (In Push_Down)
④ 模拟输入: AIN (Analog In)
⑤ 开漏输出: OUT_OD (OD: Open-Drain)
⑥ 推挽输出: OUT_PP (PP: Push-Pull)
⑦ 复用功能推挽输出: AF_PP
⑧ 复用功能开漏输出: AF_OD
每组端口的寄存器配置:
① 2个32位配置寄存器GPIOx_CRL 、 GPIOx_CRH
② 2个32位数据寄存器GPIOx_IDR、 GPIOx_ODR
③ 1个32位置位/复位寄存器GPIOx_BSRR
④ 1个16位复位寄存器GPIOx_BRR
⑤ 1个32位锁定寄存器GPIOx_LCKR

寄存器结构

GPIO_TypeDef和AFIO_TypeDef,在文件“stm32f10x_map.h”中定义如下:
typedef struct {
vu32 CRL;
vu32 CRH;
vu32 IDR;
vu32 ODR;
vu32 BSRR;
vu32 BRR;
vu32 LCKR; }
GPIO_TypeDef;
typedef struct {
vu32 EVCR;
vu32 MAPR;
vu32 EXTICR[4];
}AFIO_TypeDef;
初始化结构体变量
GPIO_InitTypeDef定义于文件 “ stm 32 f 10 x_gpio . h ” :
typedef struct {
u16 GPIO_Pin;
GPIOSpeed_TypeDef GPIO_Speed;
GPIOMode_TypeDef GPIO_Mode;
} GPIO_InitTypeDef;
• GPIO_Pin 该参数选择待设置的GPIO管脚,使用操作符“|”可以一次选中 多个管脚。可以使用下表中的任意组合。
GPIO_Pin_None:无管脚被选中
GPIO_Pin_x:选中管脚x(0–15)
GPIO_Pin_All:选中全部管脚
• GPIO_Speed 用以设置选中管脚的速率。
GPIO_Speed_10MHz:最高输出速率10MHz
GPIO_Speed_2MHz:最高输出速率2MHz
GPIO_Speed_50MHz:最高输出速率50MHz
• GPIO_Mode 用以设置选中管脚的工作状态。
GPIO_Mode_AIN:模拟输入
GPIO_Mode_IN_FLOATING:浮空输入
GPIO_Mode_IPD:下拉输入
GPIO_Mode_IPU:上拉输入
GPIO_Mode_Out_OD:开漏输出
GPIO_Mode_Out_PP:推挽输出
GPIO_Mode_AF_OD:复用开漏输出
GPIO_Mode_AF_PP:复用推挽输出

猜你喜欢

转载自blog.csdn.net/qq_46523260/article/details/106846400