GPIO都知道是通用输入输出接口的意思就不详细解释
那么我们就直接进入怎么设置GPIO接口:
这里我的编译软件是keil5,相信大家都应该知道stm32有各种的工作模式上拉、下拉、推挽、开漏等等。如果想要了解具体的工作模式原理这里我推荐大家看:推挽 开漏 高阻 这都是谁想出来的词??上拉电阻的通俗解释,你真正知道吗?下拉电阻的通俗解释,你真正知道吗?
GPIO设置(GPIO初始化):
我们直接看下STM32的函数库使用手册:
可以看到GPIO_Init有两个参数,参数一就是你要使用的是哪个GPIOx组的接口
参数二是指向结构 GPIO_InitTypeDef 的指针,GPIO_InitTypeDef具体是什么先按下不表,直接讲如何使用(输出):
GPIO_InitTypeDef GPIO_InitStructure; //定义GPIO的初始化枚举结构
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1; //选择端口号(0~15或all)
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //选择IO接口工作方式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置IO接口速度(2/10/50MHz)
GPIO_Init(GPIOA, &GPIO_InitStructure);
/*
选择IO接口工作方式:
GPIO_Mode_AIN 模拟输入
GPIO_Mode_IN_FLOATING 浮空输入
GPIO_Mode_IPD 下拉输入
GPIO_Mode_IPU 上拉输入
GPIO_Mode_Out_PP 推挽输出
GPIO_Mode_Out_OD 开漏输出
GPIO_Mode_AF_PP 复用推挽输出
GPIO_Mode_AF_OD 复用开漏输出
*/
输入设置:
GPIO_InitTypeDef GPIO_InitStructure; //定义GPIO的初始化枚举结构
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1; //选择端口号(0~15或all)
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //选择IO接口工作方式 //上拉电阻
//可以看到输入和输出代码的不同,输入不需要设置IO接口速度
//GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置IO接口速度(2/10/50MHz)
GPIO_Init(GPIOB,&GPIO_InitStructure);
但是如果仅仅这样就完了吗?没有这只是GPIO初始化,在使用前还有对RCC_APB2PeriphClockCmd 使能/失能APB2外设时钟函数来设置下:具体看STM32函数库数据手册:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE); //使能GPIOA、B时钟
GPIO_InitTypeDef
结构体通常包含以下几个重要的成员(可能根据不同版本的库有所差异):
- GPIO_Pin: 指定要配置的GPIO引脚。每个微控制器的GPIO引脚都有一个对应的编号,这个字段通常接受一个位掩码,以允许同时配置多个引脚。
- GPIO_Mode: 设置引脚的工作模式,比如输入、输出、复用功能或模拟模式等。
- GPIO_Speed: 当引脚配置为输出模式时,设置其输出速率,例如低速、中速、高速或超高速。
- GPIO_OType: 配置输出类型,主要用于输出模式,可以是推挽输出或开漏输出。
- GPIO_PuPd: 配置内部上拉或下拉电阻,用于输入模式。
下一级我们讲一下现在我们设置的端口怎么使用