端口的高低电平
GPIO_SetBits(GPIOx,GPIO_Pin_x)GPIO口高电平
GPIO_ResetBits(GPIOx,GPIO_Pin_x)GPIO口低
电平
GPIO_WriteBits(GPIOx,GPIO_Pin_x,BitVal)对1个端口进行操作
GPIO_Writ(GPIOx,PortVal)同时对16个端口进行操作(~ 按位取反)
(可以用按位或的方式控制多个端口)
GPIO的基本结构
GPIOA,GPIOB模块是挂在APB2(外设总线)上面。
GPIO模块里面含有一个寄存器和一个驱动器,
寄存器的每一位都对应一个引脚。(只有第16位有对应的端口)
驱动器是增强信号的驱动能力的。
GPIO的输出模式
推挽输出 : P-MOS和N-MOS均有效,高低电平均有驱动能力
GPIO_Mode_Out_pp(out push pull)
开漏输出 :P-MOS无效,N-MOS有效,输出高电平是高阻模式,低电平有驱动能力。
GPIO_Mode_Out_OD(out open drain)
复用推挽输出 : 高低电平均有驱动能力(由片上外设控制)
GPIO_Mode_AF_PP(atl push pull)
复用开漏输出 :输出高电平是高阻模式,低电平有驱动能力(由片上外设控制)
GPIO_Mode_AF_OD(atl open drain)
关闭 :端口关闭,由外部信号来控制。
(MOS管是一种电子开关)
GPIO的输入模式
浮空输入(数字输入):可读取引脚电平,若引脚悬空则电平不稳。
GPIO_Mode_IN_FLOATING
上拉输入(数字输入);可读取引脚电平,内部连接上拉电阻,悬空时默认高电平。
GPIO_Mode_IPU(in pull up)
下拉输入(数字输入):可读取引脚电平,内部链接下拉电阻,悬空时默认低电平。
GPIO_Mode_IPD(in pull down)
模拟输入(模拟输入);GPIO口无效,引脚直接接入内部ADC
GPIO_Mode_AIN
RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitTypeDef GPIO_InitSture;
GPIO_InitSture.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitSture.GPIO_Pin = GPIO_Pin_13 ;
GPIO_InitSture.GPIO_Speed= GPIO_Speed_50MHz;
GPIO_Init (GPIOC,&GPIO_InitSture);