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