一、STM32F103知识总结-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);//读取整个输入出端口的位数据
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值