GPIO 通用输入输出口
可配置为8种输入输出模式
输出模式下可控制端口输出高低电平,用以驱动LED,控制蜂鸣器,模拟通信协议输出时序等
输入模式下可读取端口的高低电平和电压,用于读取按键输入,外接模块电平信号输入,ADC电压采集,模拟通信协议接收数据
因为STM32是32位单片机,但端口只有16位,驱动器是增大驱动能力
注意:来自片上外设是复用功能输出
开漏智能低电平有驱动能力,没有高电平,由外部高电平上拉电阻拉高至5V
开漏输出高电平为高阻态,高电平没有驱动能力
复用开漏,推挽,引脚的控制权交给了片上外设
GPIO输入
如果PA0是上拉输入模式,引脚再悬空,PA0是高电平
第二个可以允许引脚浮空,因为已经外置了
蜂鸣器-GPIO_Mode_Out_PP
void beep()
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitTypeDef GPIO_InitTypeStruct;
GPIO_InitTypeStruct.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitTypeStruct.GPIO_Pin=GPIO_Pin_8;
GPIO_InitTypeStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitTypeStruct);
GPIO_SetBits(GPIOA,GPIO_Pin_8);
Delay(0x0FFFFF);
GPIO_ResetBits( GPIOA, GPIO_Pin_8);
Delay(0x0FFFFF);
}
光敏电阻-GPIO_Mode_IPD
void guangming()
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitTypeDef GPIO_InitTypeStruct;
GPIO_InitTypeStruct.GPIO_Mode=GPIO_Mode_IPD;
GPIO_InitTypeStruct.GPIO_Pin=GPIO_Pin_8;
GPIO_InitTypeStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitTypeStruct);
}
读取时:
GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_8)==1