STM32 GPIO设置(GPIO初始化)学习笔记

这篇具有很好参考价值的文章主要介绍了STM32 GPIO设置(GPIO初始化)学习笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

GPIO都知道是通用输入输出接口的意思就不详细解释

那么我们就直接进入怎么设置GPIO接口:

这里我的编译软件是keil5,相信大家都应该知道stm32有各种的工作模式上拉、下拉、推挽、开漏等等。如果想要了解具体的工作模式原理这里我推荐大家看:推挽 开漏 高阻 这都是谁想出来的词??上拉电阻的通俗解释,你真正知道吗?下拉电阻的通俗解释,你真正知道吗?

GPIO设置(GPIO初始化):

我们直接看下STM32的函数库使用手册:

stm32管脚在keil5里面怎么定义,STM32学习笔记,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函数库数据手册:stm32管脚在keil5里面怎么定义,STM32学习笔记,stm32,嵌入式硬件,单片机stm32管脚在keil5里面怎么定义,STM32学习笔记,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: 配置内部上拉或下拉电阻,用于输入模式。

下一级我们讲一下现在我们设置的端口怎么使用文章来源地址https://www.toymoban.com/news/detail-844041.html

到了这里,关于STM32 GPIO设置(GPIO初始化)学习笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 详解STM32的GPIO八种输入输出模式,GPIO各种输入输出的区别、初始化的步骤详解,看这文章就行了(超详细)

    在STM32微控制器中,常见的输入输出(GPIO)模式有八种,分别是推挽输出、开漏输出、复用推挽输出、复用开漏输出、浮空输入、上拉输入、下拉输入和模拟输入。下面我将为你解释每种模式的特点和区别,并提供相应的示例代码。 推挽输出(Push-Pull Output):推挽输出模式是最常

    2024年02月15日
    浏览(42)
  • 【物联网】详解STM32的GPIO八种输入输出模式,GPIO各种输入输出的区别、初始化的步骤详解,看这文章就行了(超详细)

    在STM32微控制器中,常见的输入输出(GPIO)模式有八种,分别是推挽输出、开漏输出、复用推挽输出、复用开漏输出、浮空输入、上拉输入、下拉输入和模拟输入。下面我将为你解释每种模式的特点和区别,并提供相应的示例代码。 推挽输出(Push-Pull Output):推挽输出模式是最常

    2024年02月14日
    浏览(32)
  • STM32CubeMX v6.9.0 BUG:FLASH_LATENCY设置错误导致初始化失败

    今天在调试外设功能时,发现设置了使用外部时钟之后程序运行异常,进行追踪调试并与先前可以正常运行的项目进行对比之后发现这个问题可能是由于新版本的STM32CubeMX配置生成代码时的BUG引起的。 MCU: STM32H750VBT6 STM32CubeIDE: Version: 1.13.0 Build: 17399_20230707_0829 (UTC) STM32CubeMX: v

    2024年02月15日
    浏览(41)
  • STM32/GD32学习指南-踩坑之(一)外部晶振配置,初始化失败,不起振

    GD32使用外部有源晶振和无源晶振的问题,型号为GD32 F450 一、GD32配置使用外部晶振 1.使用外部无源晶振 找到startup_gd32f450_470.s汇编文件,找到SystemInit()函数跳转进去 在底部找到system_clock_config()函数,再次跳转进去 选中宏定义:__SYSTEM_CLOCK_200M_PLL_IRC16M,跳转,如图 将内部时钟

    2024年02月13日
    浏览(31)
  • stm32 hal库 RCC初始化函数SystemClock_Config()梳理分析、初步细致学习(一)

    目录 一、PLL主时钟初始化 1.1 时钟使能  1.2 配置好主时钟配置结构体 1.3 将配置好的值写入到对应的寄存器、初始化PLL主时钟; 1.3.1 __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct-HSEState)分析:  1.3.2 给PLL相关寄存器赋值: 二、外设时钟初始化 2.1等待周期的验证和写入; 2.2 HCLK配置 2.3 SYSC

    2024年02月15日
    浏览(27)
  • STM32各外设初始化步骤

            1、使能GPIO时钟         2、初始化GPIO的输入/输出模式         3、设置GPIO的输出值或获取GPIO的输入值         1、使能EXTI线所在的GPIO时钟和AFIO复用时钟         2、初始化EXTI线所在的GPIO的输入输出模式         3、将GPIO脚映射到对应的EXTI线上         4、设置

    2024年03月25日
    浏览(39)
  • STM32 cubemx CAN STM32 CAN初始化详解

    接收用到的结构体如下: CAN概念:         全称Controller Area Network,是一种半双工,异步通讯。 物理层:         闭环:允许总线最长40m,最高速1Mbps,规定总线两端各有一个120Ω电阻,闭环        开环:最大传输距离1Km,最高速125Kbps,规定每根线串联一个2.2kΩ的电阻,

    2024年02月13日
    浏览(37)
  • STM32 串口的初始化(内附详细代码)

    首先我们先要根据原理图来确认我们用的串口接到了那个引脚  我这边的串口1为例,接收端是PA10,发送端是PA9首先我们需要配置PA9和PA10. 把接受端配置成浮空输入,完全靠引脚来判断。把发送端配置成复用推挽模式,并打开GPIOA的时钟和复用时钟多的看代码吧,我把注释都写

    2024年02月13日
    浏览(33)
  • STM32 hal库 NVIC初始化函数梳理

    使用的是stm32f407vg,代码来源stm32cubemx。 已经配置了中断的是GPIOD_pin6和TIM2。  这个是STM32CubeMX里面NVIC的控制面板;其中最上面priority grope是优先级组,我设置的是4位抢占优先级,0位响应优先级,就和以前刚学中断时中断嵌套那样。 下面是有哪些中断源,勾上之后,在最下面

    2024年01月18日
    浏览(35)
  • STM32—TIM定时器初始化结构体详解

      注:高级控制定时器可以用到所有初始化结构体,通用定时器不能使用 TIM_BDTRInitTypeDef 结构体,基本定时器只能使用时基结构体。    时基结构体TIM_TimeBaseInitTypeDef用于定时器基础参数设置,与TIM_TimeBaseInit函数配合使用完成配置。 (1) TIM_Prescaler:定时器预分频器设置,

    2024年02月02日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包