GPIO通用输入输出口

  • 输入输出的八种模式

输出模式:可以控制端口的是否通电,继而使当前引脚上连接的外设工作。

输入模式:可以读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据

每个GPIO引脚都可以由软件配置成输出(推挽或开漏)、输入(浮空或模拟或上拉或下拉)或复用的外设功能 端口。

推挽输出 GPIO_Mode_Out_PP高电平接VDD(正极)              低电平接VSS(负极)
开漏输出 GPIO_Mode_Out_OD高电平接高阻态(上拉电阻)  低电平接VSS(负极)
复用推挽输出GPIO_Mode_AF_PP靠外设控制    高电平接VDD (正极)  低电平接VSS(负极)
复用开漏输出GPIO_Mode_AF_OD靠外设控制    高电平接高阻态(上拉电低电平接VSS(负极)
浮空输入GPIO_Mode_IN_FLOATING上下拉电阻都不接入,可以读取外部输入是高是低
上拉输入GPIO_Mode_IPU上拉电阻接入,默认高电平
下拉输入GPIO_Mode_IPD下拉电阻接入,默认低电平
模拟输入GPIO_Mode_AIN

GPIO无效,直接读取模拟信号,引脚直接接入内部ADC

  • 定义GPIO口的函数

GPIO_DeInit(GPIO_TypeDef* GPIOx);   

           复位( 外设 )

	GPIO_DeInit(GPIOA);

GPIO_PinLockConfig(GPIOx, GPIO_Pin_0);

锁定某个引脚,防止意外更改

GPIO_PinLockConfig(GPIOA,GPIO_Pin_1);

GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);

         定义(外设,自己定义的结构体的地址)把结构体里的自己定义好的参数都赋值给外设

GPIO_InitTypeDef GOIP_INITSTRUCTURE;//结构体类型  结构体名称
	GOIP_INITSTRUCTURE.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出
	GOIP_INITSTRUCTURE.GPIO_Pin=GPIO_Pin_0;//使用0号引脚
	GOIP_INITSTRUCTURE.GPIO_Speed=GPIO_Speed_50MHz;//最高的切换电平的速率
	GPIO_Init(GPIOA,&GOIP_INITSTRUCTURE);
GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0);//读取

  •  输入输出GPIO口的函数

输入:读取GPIO口的函数

GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

        读取某一个端口的值(外设,引脚);

GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0);


 GPIO_ReadInputData(GPIO_TypeDef* GPIOx);

        读取整个外设的值,返回16位,每一位代表一个引脚的值(GOIPA);

GPIO_ReadInputData(GPIOA);

        
GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

        读取自己输出的是什么,取输出寄存器的某一位,(外设,引脚);

GPIO_ReadOutputDataBit(GPIOA,GOIP_Pin_0);

 GPIO_ReadOutputData(GPIO_TypeDef* GPIOx); 

      读取整个外设的输出的值,返回16位,每一位代表一个引脚的值(GOIPA);
 

GPIO_ReadOutputData(GPIOA);

输出:写入GPIO口的函数

void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

                设置高电平(外设,引脚);

GPIO_SetBits(GPIOA,GPIO_Pin_0);//高电平


void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

                 设置低电平(外设,引脚);

GPIO_ResetBits(GPIOA,GPIO_Pin_0);//低电平


void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);

                写入电平(外设,引脚, 高电平或低电平);

GPIO_WriteBit(GPIOA,GPIO_Pin_0, Bit_RESET);//设置低电平
GPIO_WriteBit(GPIOA,GPIO_Pin_1, Bit_SET);//设置高电平


void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal); 

        全写入(外设,高电平或者低电平);

GPIO_Write(GPIOA,Bit_SET);//把GPIOA的所有引脚设置高电平
GPIO_Write(GPIOA,Bit_RESET);//把GPIOA的所有引脚设置低电平

                

  • 17
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值