简称
GPIO(General-Purpose Input/Output)通用输入输出。
可以配置为8种输入输出模式
输出模式可以控制端口输入输出高低电平、用以驱动LED、蜂鸣器、模拟输出协议时序等。
输入模式下可以读取端口的高低电平或电压,读取按键外设输入电平信号、ADC电压采集、模拟通信协议接收数据等。
端口模式
浮空输入_IN_FLOATING
读取引脚电平,若引脚悬空,电平不稳定
上拉输入_IPU
读取引脚电平,内部接上拉电阻,引脚悬空默认高电平
下拉输入_IPD
读取引脚电平,内部接下拉电阻,引脚悬空默认低电平
模拟输入_AIN
GPIO无效,引脚直接接入内部ADC
开漏输出_OUT_OD
输出引脚电平,CPU控制内部接地的N-MOS。
当N-MOS关闭,I/O口的电平由外部电路决定,输出为浮空/高阻态
当N-MOS开启,I/O口的电位被拉到低电位
推挽输出_OUT_PP
推挽输出是在开漏输出的基础上加了一个P-MOS接VDD
此时CPU可以控制选择哪个MOS管开启,从而输出高低电平
复用开漏输出_AF_OD
与开漏输出类似,不过此时由片上外设控制
复用推挽输出_AF_PP
与推挽输出类似,不过此时由片上外设控制
端口速度
I/O口模式下有三种速度可选(2MHz、10MHz、50MHz),指驱动电路的响应速度
高频驱动电路:输出频率高,噪音大,功耗高,电磁干扰强;
低频驱动电路:输出频率低,噪音小,功耗低,电磁干扰弱;
根据需要选择
STM32配置GPIO
GPIO_InitTypeDef GPIO_InitStructure; //定义GPIO结构体变量
//GPIO在APB2外设上,所以初始化APB2外设的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能GPIOA时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //使用1号引脚,也可以GPIO_Pin_All
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度为50MHz
GPIO_Init(GPIOC, &GPIO_InitStructure); //传地址结构体地址初始化对应的端口