STM32 GPIO初始化学习笔记
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
结构体通常包含以下几个重要的成员(可能根据不同版本的库有所差异):
下一级我们讲一下现在我们设置的端口怎么使用
作者:喜欢电子的哗画