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 结构体通常包含以下几个重要的成员(可能根据不同版本的库有所差异):

  • GPIO_Pin: 指定要配置的GPIO引脚。每个微控制器的GPIO引脚都有一个对应的编号,这个字段通常接受一个位掩码,以允许同时配置多个引脚。
  • GPIO_Mode: 设置引脚的工作模式,比如输入、输出、复用功能或模拟模式等。
  • GPIO_Speed: 当引脚配置为输出模式时,设置其输出速率,例如低速、中速、高速或超高速。
  • GPIO_OType: 配置输出类型,主要用于输出模式,可以是推挽输出或开漏输出。
  • GPIO_PuPd: 配置内部上拉或下拉电阻,用于输入模式。
  • 下一级我们讲一下现在我们设置的端口怎么使用

    作者:喜欢电子的哗画

    物联沃分享整理
    物联沃-IOTWORD物联网 » STM32 GPIO初始化学习笔记

    发表评论