?STM32各个GPIO口的配置与51相比较为复杂,为了更好的记忆和日后方便查阅,特此记录一下。
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = PIN;
GPIO_InitStructure.GPIO_Mode = MODE;
GPIO_InitStructure.GPIO_Speed = SPEED;
GPIO_Init(PORT, &GPIO_InitStructure);
GPIO口主要有两大功能,输出和输入。因为在STM32中有很多端口重映射,GPIO口也经常重映射成各外设的输出口,因此输出中又分为两大类:通用输出和复用功能映射;这两种里面都包括两种模式:推挽输出和开漏输出。输入功能则包括了四种模式:模拟输入、浮空输入、下拉输入、上拉输入。
?一、输出
?1.推挽输出(GPIO_Mode_Out_PP)
推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务:在输出高电平时,P-MOS管导通;低电平时,N-MOS管导通。两个管子轮流导通,一个负责灌电流,一个负责拉电流。
推挽输出的低电平为0v,高电平为3.3V。输出既可以向负载灌电流,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度。
?2.开漏输出(GPIO_Mode_Out_OD)
输出低电平时,N-MOS管导通,使输出接地,若控制输出1(无法直接输出高电平),则既不输出高电平,也不输出低电平,为高阻态。正常使用时必须外接上拉电阻。
推挽输出一般用于输出电平为0V和3.3V的场合,而开漏输出一般用于电平不匹配的场合,如需要输出5V,就需要在外部接一个上拉电阻,电源为5V。
二、输入
1.模拟输入(GPIO_Mode_AIN)
模拟输入模式关闭了施密特触发器,不接上、下拉电阻,经由另一线路把电压信号传送到片上外设
模块。如传送至ADC模块,由ADC采集电压信号。所以使用ADC外设时,必须设置为模拟输入模
式。常应用ADC模拟输入,或者低功耗下省电。
2.浮空输入模式(GPIO_Mode_IN_FLOATING)
在芯片内部既没有接上拉,也没有接下拉电阻。浮空输入状态下,IO的电平状态是不确定的,完全
由外部输入决定(输入达到条件就触发),如果在该引脚悬空的情况下,读取该端口的电平是不确
定的。
这种模式用于标准的通信协议如I2C、USART的接收端。
3.下拉输入(GPIO_Mode_IPD)
在默认状态下(GPIO引脚无输入),读取得的GPIO引脚数据为0,低电平。只接受高电平!
4.上拉输入(GPIO_Mode_IPU)
在默认状态下(GPIO引脚无输入),读取得的GPIO引脚数据为1,高电平。只接受低电平!
|