一、STM32F103知识总结-GPIO
- 1.GPIO的工作方式:
- 2.GPIO的相关函数:
- 3.GPIO的初始化:
- 4.GPIO设置:
- (1).GPIO置0,置1:
- (2).读GPIO电平/数据:
1.GPIO的工作方式:
GPIO支持4种输入模式(浮空输入、上拉输入、下拉输入、模拟输入)和4种输出模式(开漏输出、开漏复用输出、推挽输出、推挽复用输出)。同时,GPIO还支持三种最大翻转速度(2MHz、10MHz、50MHz)。
每个I/O口可以自由编程,但I/O口寄存器必须按32位字被访问。
1. GPIO_Mode_AIN 模拟输入(使用ADC时使用,应用ADC模拟输入,或者低功耗下省电)
2. GPIO_Mode_IN_FLOATING 浮空输入(没有高低电平,属于高阻输入,浮空输入,可以做KEY识别,RX1)
3. GPIO_Mode_IPD 下拉输入(下拉一个大概10K的电阻,IO内部下拉电阻输入,使I/O口处于低电平)
4. GPIO_Mode_IPU 上拉输入(上拉一个10K电阻,IO内部上拉电阻输入,使I/O口处于高电平)
5. GPIO_Mode_Out_OD 开漏输出(既不接高也不接低,是一个开漏状态,IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实现C51的IO双向功能)
6. GPIO_Mode_Out_PP 推挽输出(输出大电流的一个状态,IO输出0-接GND, IO输出1 -接VCC,读输入值是未知的)
7. GPIO_Mode_AF_OD 复用开漏输出(片内外设功能(TX1、MOSI、MISO.SCK.SS))
8. GPIO_Mode_AF_PP 复用推挽输出(片内外设功能(I2C的SCL、SDA))
2.GPIO的相关函数:
3.GPIO的初始化:
void GPIO_Config(void) //GPIO初始配置
{
GPIO_InitTypeDef GPIO_InitStructure; //定义结构体变量
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); //使能GPIOD的时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; //指定引脚13
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置输出速率50MHz
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出模式
GPIO_Init(GPIOD, &GPIO_InitStructure); //初始化外设GPIOx寄存器
}
4.GPIO设置:
(1).GPIO置0,置1:
GPIO_WriteBit(GPIOB,GPIO_Pin_1,(BitAction)(1)); //PB1接口输出高电平1
GPIO_WriteBit(GPIOB,GPIO_Pin_1,(BitAction)(0)); //PB1接口输出低电平0
GPIO_SetBits(GPIOB,GPIO_Pin_1); //PB1都为高电平(1)
GPIO_ResetBits(GPIOB,GPIO_Pin_1); //PB1都为低电平(0)
(2).读GPIO电平/数据:
GPIO_ReadInputDataBit(GPIOx,GPIO_Pin_y);//读取单个输入端口的数据,读电平
GPIO_ReadInputData(GPIOx);//读取整个输入端口的数据
GPIO_ReadOutputDataBit(GPIOx, GPIO_Pin_y);//读取单个输出端口的数据
GPIO_ReadOutputData(GPIOx);//读取整个输入出端口的位数据