GPIO

来源:互联网 发布:win7电脑桌面美化软件 编辑:程序博客网 时间:2024/06/06 09:55

STM32F4通用I/O使用

一、使用I/O口的一般步骤

1、配置I/O管脚功能:输出/输入/其它

2、设置/读取管脚

二、STM32的I/O端口特性

STM32的管脚可以分别配置为多种模式:

1、上拉输入:上拉输入就是将管脚电位拉高,上拉输入能将不确定的信号通过一个电阻嵌位在高电平。电阻同时起限流作用,弱强只是上拉电阻的阻值不同,没有什么严格区分。

2、下拉输入:把电压拉低,拉到GND,与上拉原理相似。

3、浮空输入:浮空(floating)就是逻辑器件的输入引脚即不接高电平,也不接低电平。由于逻辑器件的内部结构,当它输入引脚悬空时,相当于该引脚接了高电平。一般实际运用时,引脚不建议悬空,易受干扰。 通俗讲就是让管脚什么都不接,浮空着。

4、模拟输入:模拟输入是指传统方式的输入。如果要使用ADC等功能则要配置为模拟输入。

5、推完输出:可以输出高低电平,能够提高较大的输出电流,即带负载能力强,推挽结构一般是由两个三极管提供。

6、开漏输出:输出端相当于三极管的集电极,只能输出低电平,要想的到高电平状态,必须外加上拉电阻。

7、复用开漏输出、复用推挽输出:可以理解为GPIO口被用作第二功能时的配置情况(即并非作为通用IO口使用)

三、代码解析

1、配置PC0推挽输出

/* 库版本: V1.8.0 */

static void GPIOUsePC0(void)
{

/* 0. 使能GPIO时钟 */

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);

/* 1. 配置GPIO */GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; /* 推挽输出   */GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  GPIO_Init(GPIOC, &GPIO_InitStructure);

}

2、使用PC0

/* 库版本: V1.8.0 */

int main(void)
{

unsigned int i;

/* 配置时钟 */

Stm32f4xxClockInit();

/* 配置PC0为推挽输出 */

GPIOUsePC0();

for(;;)

{

/* 2、设置输出低电平 */

GPIO_ResetBits(GPIOC, GPIO_Pin_0);

for(i = 0; i < 0xffffff; i++);

/* 2、设置输出高电平 */

GPIO_SetBits(GPIOC, GPIO_Pin_0);

for(i = 0; i < 0xffffff; i++);

}

}