[STM32学习笔记] 1.GPIO

【系列笔记为跟随UP主江协科技学习STM32过程的一些问题,同时方便日后忘记时复习,文中部分内容来源于UP主的PPT同时加入个人理解】

一.GPIO简介

GPIO(General Purpose Input Output)即通用输入输出口。可配置为8种输入输出模式 ; 输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等 ,输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等。

二.GPIO的基本输入输出模式

1.模拟输入(GPIO_Mode_AIN ):用于ADC采集;
2.浮空输入(GPIO_Mode_IN_FLOATING) :若引脚浮空则电平不确定;
3.下拉输入(GPIO_Mode_IP ):内接下拉电阻,默认低电平;
4.上拉输入(GPIO_Mode_IPU):内接上拉电阻,默认高电平;
5.开漏输出(GPIO_Mode_Out_OD ):高电平为高阻态,无驱动能力;
6.推挽输出(GPIO_Mode_Out_PP ):高低电平均具有驱动能力,默认低电平;
7.复用开漏输出(GPIO_Mode_AF_OD ):连接到片上外设,输出由片上外设控制;
8.复用推挽输出(GPIO_Mode_AF_PP) :连接到片上外设,输出由片上外设控制;可用于产生PWM信号。

三.GPIO常用库函数

void GPIO_DeInit(GPIO_TypeDef* GPIOx)://将指定的 GPIOx 外设恢复到默认状态。

void GPIO_AFIODeInit(void)://将外设映射(Alternate Function)寄存器恢复为默认状态。

void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)://根据结构体 GPIO_InitStruct 中的配置参数,初始化特定 GPIO 外设的引脚。
          
// GPIO_InitTypeDef* GPIO_InitStruct参数
typedef struct
{
  uint16_t GPIO_Pin;                           //引脚选择

  GPIOSpeed_TypeDef GPIO_Speed;               //指定所选引脚的速度(常用GPIO_Speed_50MHz)

  GPIOMode_TypeDef GPIO_Mode;                 //引脚工作模式选择
     
}GPIO_InitTypeDef;

void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct)://将结构体 GPIO_InitStruct 中的成员变量初始化为默认值。

uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)://读取指定 GPIO 的单个输入引脚的状态。

uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx)://读取指定 GPIOx的所有输入引脚的状态。
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)://读取指定 GPIO 的单个输出引脚的状态。

uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx)://读取指定 GPIO 的所有输出引脚的状态。

void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)://将指定 GPIO 的一个或多个输出引脚置高。

void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)://将指定 GPIO 的一个或多个输出引脚置低。

void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal)://设置指定 GPIO 的一个输出引脚的电平状态。

void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal)://设置指定 GPIO 的所有输出引脚的电平状态。

void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)://锁定指定 GPIO 的一个或多个引脚的配置寄存器,防止意外改变配置。

void GPIO_EventOutputConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource)://配置用于事件输出功能的引脚。

void GPIO_EventOutputCmd(FunctionalState NewState)://使能或禁用事件输出功能。

void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState)://重新映射指定引脚的功能。

void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource)://配置外部中断线路选择。

void GPIO_ETH_MediaInterfaceConfig(uint32_t GPIO_ETH_MediaInterface)://配置以太网接口的引脚。

引脚电平翻转:GPIO_WriteBit(GPIOx,GPIO_Pin_y, (BitAction)(1-GPIO_ReadOutputDataBit(GPIOx,GPIO_Pin_y)));

四.GPIO初始化

   

  GPIO_InitTypeDef  GPIO_InitStructure;
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOx, ENABLE);  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_y;     
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode;     
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed;
  GPIO_Init(GPIOx, &GPIO_InitStructure);   

【个人初步学习,若有错误恳请指正】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值