STM32的GPIO口使用
2017-10-31 来源:eefocus
STM32的GPIO类似于51单片机的IO口。只不过STM32的IO口使用时要配置输入/输出模式、速度、而且时钟使能后才能使用。
配置相关代码:
GPIO_InitTypeDef GPIO_InitStructure;//定义初始化类型结构体
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//打开GPIOA时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;//引脚
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//速度
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//模式
GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化
GPIO电路结构:
输出模式:
1.推挽输出_Out_PP
电路如下图一:
输出的高低电平取决于芯片的电压,每次只用一个管子导通,功耗小,速度快,负载能力强
2.开漏输出_Out_OD
电路图入上图二:
输出端相当于三极管的集电极,想要输出高电平必须接上拉电阻和电源,高电平取决于外部电压,适合做电流型驱动,上拉电阻越大逻辑电平转换速度越慢,功耗越小,可以将多个开漏输出引脚连起来,通过连接上拉电阻,组成线与。
3.复用推挽输出_AF_PP
4.复用开漏输出_AF_OD
3和4为GPIO复用为第二功能引脚时使用,数据与片内外设交互而不是GPIO数据寄存器。
输入模式:
1.上拉输入_IPU
IO内部接上拉电阻的输入,默认输入为1
2.下拉输入_IPD
IO内部接上下电阻的输入,默认输入为0
3.浮空输入_IN_FLOATING
逻辑器件的输入引脚既没接高电平也没接低电平,呈高阻态,IO的电平不确定,由外界输入决定,悬空时,输入电平不确定。上下拉电阻为几十K,如果设置为上下拉模式,当引脚长期处于低高电平时,功耗就会很大,此时可以设为浮空输入模式,然后外接比较大的上下拉电阻来降低功耗。
4.模拟输入_AIN
配置为模拟输入时,读取输入数据寄存器值为0,模拟即模拟信号的意思,DAC输出和AD输入引脚都配置为模拟输入模式。