STM32 GPIO类型
GPIO类型
GPIO四种类型
•1. 输入
•2. 输出
•3. 复用
•4. 模拟输入
默认GPIO是高阻态。高组态该GPIO处于输入态,其电平取决于外部状态,如果该GPIO是悬浮,则电平理论上是不确定的
配置GPIO注意事项
•GPIO必须使能相应的时钟模块
•GPIO可以配置推挽和漏级开路两种模式;推挽只能用于输出;漏级开路可用于输入,输出,及输入输出双向的情况
•漏级开路必须接上拉电阻。否则无法输出高电平
•GPIO初始化如果配置推挽模式,由于GPIO寄存器默认为0,配置模式后,电平瞬间会变低,最好配置推挽前,先配置电平
GPIO内部上拉,下拉配置
GPIO_PuPd_NOPULL = 0x00,
GPIO_PuPd_UP = 0x01,
GPIO_PuPd_DOWN = 0x02
GPIO配置AF复用模型下,要另外配置成漏级开路或推挽
两者区别:如果只用于输出一般用推挽,如果双向的漏级开路,可参考网上的一些例子
配置实例
第一种方法:
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_WriteBit(GPIOC, GPIO_Pin_9, Bit_SET);
第二种方法:
GPIO_WriteBit(GPIOC, GPIO_Pin_9, Bit_SET);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
通过示波器观察 第一种方法:会出现GPIO瞬间有个低电平,之后变成高电平,第二种方法:一直为高电平。