GPIO简介
GPIO(General Purpose Input Output)通用输入输出口 可配置为8种输入输出模式 引脚电平:0V~3.3V,部分引脚可容忍5V(输出只有3.3V) 输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等 输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等
GPIO基本结构
GPIO位结构
GPIO模式
一个端口输入时不能输出
一个端口只能有一个输出,可同时有多个输入
操控GPIO的三个步骤
1.利用RCC开启GPIO时钟 (AHB,ABP1,APB2上的设备均属于外设)
2.使用GPIO_Init函数初始化GPIO
3.使用输入或输出函数控制GPIO
GPIO输出
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
//将指定端口设置为高电平
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
//将指定端口设置为低电平
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
//根据BitVal指定端口设置为Bitval
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
//选择外设,同时对16个端口同时操作
GPIO输入
GPIO_ReadInputDataBit 输入模式下读取指定GPIO口的某一端口值
GPIO_ReadInputData 输入模式下读取指定GPIO口的端口值
GPIO_ReadOutputDataBit 输出模式下读取指定GPIO口的某一端口值(看自己输出了什么) GPIO_ReadOutputDataBit 输出模式下读取指定GPIO口的端口值(看自己输出了什么)
输入时的操作注意:按键消抖(下拉输入)
if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13)==RESET)
{
Delay_ms(20);
while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13)==0);
Delay_ms(20);
//
//
}