一、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的相关函数:

stm32H7 浮点运算 stm32f103 浮点_stm32H7 浮点运算

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);//读取整个输入出端口的位数据