STM32 GPIO

  • Post author:
  • Post category:其他




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瞬间有个低电平,之后变成高电平,第二种方法:一直为高电平。



版权声明:本文为u010361744原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。