欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

STM32f1学习笔记——GPIO

程序员文章站 2022-06-23 21:01:52
通用输入/输出GPIO参考文章:“STM32自学笔记”Stn32可以提供很多GPIO,一般分别在5个端口(PORT)(GPIOA-GPIOE),每个端口有16个GPIO,最大耐压值为5v。每个端口有32为宽带的设置寄存器,一共64位,每个GPIO占用4位配置位。其中两位设置GPIO的方向,另外两位设置GPIO的工作模式。GPIO中的常用参数1、GPIO_Pin定义GPIO_Pin参数描述GPIO_Pin_None无引脚被选中GPIO_Pin_0~15选中引脚1~15(...

通用输入/输出GPIO

参考文章:“STM32自学笔记”
Stm32可以提供很多GPIO,一般分别在5个端口(PORT)(GPIOA-GPIOE),每个端口有16个GPIO,最大耐压值为5v。每个端口有32为宽带的设置寄存器,一共64位,每个GPIO占用4位配置位。其中两位设置GPIO的方向,另外两位设置GPIO的工作模式

GPIO中的常用参数

1、GPIO_Pin定义

GPIO_Pin参数 描述
GPIO_Pin_None 无引脚被选中
GPIO_Pin_0~15 选中引脚1~15(其中一个)
GPIO_Pin_All 选中全部引脚

2、GPIO_Mode定义

GPIO_Mode参数 描述
GPIO_Mode_AIN 模拟输入
GPIO_Mode_FLOATING 浮空输入
GPIO_Mode_IPD 下拉输入
GPIO_Mode_IPU 上拉输入
GPIO_Mode_Out_OD 开漏输出
GPIO_Mode_Out_PP 推挽输出
GPIO_Mode_AF_OD 复用开漏输出
GPIO_Mode_AF_PP 复用推挽输出

3、GPIO_Speed定义

GPIO_Speed参数 描述
GPIO_Speed_2MHz 最高输出频率2MHz
GPIO_Speed_10MHz 最高输出频率10MHz
GPIO_Speed_50MHz 最高输出频率50MHz

关于参数的一些说明:

上下拉输入:即在将输入值在没有低/高平信号给到时,稳定在高/低平
模拟输入:用ADC时,将模拟信号送个MCU
浮空输入:一般用于I2C与UASRT的输入管脚
开漏输出:只能输出低电平
推挽输出:既可以输出高电平也可以输出低电平
GPIO_Speed:字面意思就是变换电平所需的时间;在GPIO设置成输入模式时,不需要设置翻转速度

GPIO函数说明

// GPIO 说明
/*设为默认状态*/
void GPIO_DeInit(GPIO_TypeDef* GPIOx);
/*GPIO_Init(GPIO_TypeDef * GPIOx,GPIO_Type_InitTypeDef * GPIO_InitStruct)*/
GPIO_Init(GPIOA,&GPIO_InitStructure);  
void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct)
{
  /*
  	说明:端口默认缺省为全选,2MHz,浮空输入
  */
  /* Reset GPIO init structure parameters values */
  GPIO_InitStruct->GPIO_Pin  = GPIO_Pin_All;
  GPIO_InitStruct->GPIO_Speed = GPIO_Speed_2MHz;
  GPIO_InitStruct->GPIO_Mode = GPIO_Mode_IN_FLOATING;
}

/*端口置位*/
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
#define GPIO_Pin_0                 ((uint16_t)0x0001)  /*!< Pin 0 selected */
#define GPIO_Pin_1                 ((uint16_t)0x0002)  /*!< Pin 1 selected */
#define GPIO_Pin_2                 ((uint16_t)0x0004)  /*!< Pin 2 selected */
#define GPIO_Pin_3                 ((uint16_t)0x0008)  /*!< Pin 3 selected */
#define GPIO_Pin_4                 ((uint16_t)0x0010)  /*!< Pin 4 selected */
#define GPIO_Pin_5                 ((uint16_t)0x0020)  /*!< Pin 5 selected */
#define GPIO_Pin_6                 ((uint16_t)0x0040)  /*!< Pin 6 selected */
#define GPIO_Pin_7                 ((uint16_t)0x0080)  /*!< Pin 7 selected */
#define GPIO_Pin_8                 ((uint16_t)0x0100)  /*!< Pin 8 selected */
#define GPIO_Pin_9                 ((uint16_t)0x0200)  /*!< Pin 9 selected */
#define GPIO_Pin_10                ((uint16_t)0x0400)  /*!< Pin 10 selected */
#define GPIO_Pin_11                ((uint16_t)0x0800)  /*!< Pin 11 selected */
#define GPIO_Pin_12                ((uint16_t)0x1000)  /*!< Pin 12 selected */
#define GPIO_Pin_13                ((uint16_t)0x2000)  /*!< Pin 13 selected */
#define GPIO_Pin_14                ((uint16_t)0x4000)  /*!< Pin 14 selected */
#define GPIO_Pin_15                ((uint16_t)0x8000)  /*!< Pin 15 selected */
/*清楚端口数据,即置0*/
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

本文地址:https://blog.csdn.net/pukun123/article/details/108533740