STM32学习笔记GPIO使用超强总结 下载本文

内容发布更新时间 : 2024/7/6 21:03:46星期一 下面是文章的全部内容请认真阅读。

STM32学习笔记GPIO使用超强总结

1 GPIO使用步骤

1.1. 使能GPIO对应的外设时钟

例如://使能GPIOA、GPIOB、GPIOC对应的外设时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC , ENABLE);

1.2. 声明一个GPIO_InitStructure结构体

例如:

GPIO_InitTypeDef GPIO_InitStructure; 1.3. 选择待设置的GPIO管脚

例如://选择待设置的GPIO第7、8、9管脚位 ,中间加“|”符号

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 |GPIO_Pin_8 | GPIO_Pin_9; 1

1.4. 设置选中GPIO管脚的速率

例如://设置选中GPIO管脚的速率为最高速率2MHz

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;//最高速率2MHz 1

1.5. 设置选中GPIO管脚的模式

例如://设置选中GPIO管脚的模式为开漏输出模式

GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_OD; //开漏输出模式 1 2

1.6. 根据GPIO_InitStructure中指定的参数初始化外设GPIOX

例如:

GPIO_Init(GPIOC,&GPIO_InitStructure); 1

1.7.其他应用

例: 将端口GPIOA的第10、15脚置1(高电平)

GPIO_SetBits(GPIOA,GPIO_Pin_10| GPIO_Pin_15); 1

例:将端口GPIOA的第10、15脚置0(低电平)

GPIO_ResetBits(GPIOA,GPIO_Pin_10| GPIO_Pin_15); 1

2. GPIO操作说明

2.1 库函数: 函数GPIO_DeInit

功能描述:将外设GPIOx寄存器重设为缺省值 例:

GPIO_DeInit(GPIOA); 1

2.2 函数GPIO_AFIODeInit

功能描述:将复用功能(重映射事件控制和EXTI设置)重设为缺省值 例:

GPIO_AFIODeInit(); 1

2.3 函数GPIO_Init

功能描述:根据GPIO_InitStruct中指定的参数初始化外设GPIOx寄存器 例:

GPIO_InitTypeDefGPIO_InitStructure;

GPIO_InitStructure.GPIO_Pin= GPIO_Pin_All;

GPIO_InitStructure.GPIO_Speed= GPIO_Speed_10MHz;

GPIO_InitStructure.GPIO_Mode= GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOA,&GPIO_InitStructure);

2.3.1 GPIO_InitTypeDefstructure

GPIO_InitTypeDef定义于文件“stm32f10x_gpio.h”:

typedef struct {

u16GPIO_Pin;

GPIOSpeed_TypeDefGPIO_Speed;

GPIOMode_TypeDefGPIO_Mode;

}GPIO_InitTypeDef;

2.3.2 GPIO_Pin

该参数选择待设置的GPIO管脚,使用操作符“|”可以一次选中多个管脚。可以使用下表中的任意组合。

GPIO_Pin_None: 无管脚被选中

GPIO_Pin_x: 选中管脚x(0--15)

GPIO_Pin_All: 选中全部管脚 2.3.3 GPIO_Speed

用以设置选中管脚的速率。

GPIO_Speed_10MHz: 最高输出速率10MHz

GPIO_Speed_2MHz: 最高输出速率2MHz

GPIO_Speed_50MHz: 最高输出速率50MHz 2.3.4 GPIO_Mode

用以设置选中管脚的工作状态。

GPIO_Mode_AIN: 模拟输入

GPIO_Mode_IN_FLOATING: 浮空输入

GPIO_Mode_IPD: 下拉输入

GPIO_Mode_IPU: 上 拉输入

GPIO_Mode_Out_OD: 开漏输出

GPIO_Mode_Out_PP: 推挽输出