STM32的GPIO的详细配置指南

1. GPIO简介

  • GPIO(General Purpose Input/Output)是用于在微控制器中与外部世界通信的接口。
  • 通过GPIO,微控制器可以控制外部设备(如LED、LCD、按键等)的状态,也可以接收外部设备的状态(如传感器数据)

2. GPIO配置寄存器

  • GPIO配置寄存器用于配置和控制GPIO引脚的行为。
  • 主要的GPIO寄存器包括:
    • GPIO配置寄存器(GPIOx_CR):用于配置引脚的模式、速度、上拉/下拉等。
    • GPIO有如下几种需要配置的属性:
  1. 模式(Mode):

    • 每个引脚可以配置为输入、输出或复用模式。
    • 通常使用两个位来表示一个引脚的模式,例如MODE0和MODE1位表示一个引脚的模式。可以根据引脚数量的不同,有不同数量的MODE位。
  2. 速度(Speed):

    • 速度字段用于配置引脚的输出速度。
    • 通常有两个位来表示一个引脚的输出速度,例如SPEED0和SPEED1位。速度可以分为低速、中速、高速和非速度控制。
    • IO引脚的速度设置用于控制引脚的输出信号变化速率,其主要目的是优化系统性能和电气特性。具体来说,速度设置可以影响到引脚输出信号的上升时间和下降时间,从而影响到信号的稳定性、功耗和电磁兼容性等方面。

    • 以下是速度设置的一些常见用途:

      • 信号带宽和响应速度: 高速输出可以使得信号在引脚之间传输更快,从而提高系统的响应速度和通信带宽。特别是在高频率通信或者快速数据传输的应用中,选择较高的速度设置可以确保信号传输的及时性和准确性。

      • 时序要求和稳定性: 在一些时序要求严格的应用中,如时钟信号、同步信号等,选择适当的速度设置可以确保引脚输出信号的上升时间和下降时间满足时序要求,从而保证系统的稳定性和可靠性。

      • 功耗优化: 在一些功耗敏感的应用中,选择适当的速度设置可以降低引脚的功耗。通常来说,较低的速度设置会使得引脚输出信号的切换速度降低,从而降低功耗并减少电流消耗。

      • 电磁兼容性(EMC): 选择适当的速度设置可以减少引脚输出信号的边沿过渡速率,从而降低系统的辐射噪声和电磁干扰(EMI)水平,有助于提高系统的电磁兼容性。

  3. 上拉/下拉(Pull-up/Pull-down):

    • 上拉和下拉功能允许在引脚处于输入模式时,通过内部上拉或下拉电阻将引脚拉高或拉低。
    • 通常有两个位来表示一个引脚的上拉/下拉配置,例如PUPD0和PUPD1位。可以选择上拉、下拉、或者不使能上拉/下拉。
  4. 复用(Alternate Function):

    • 引脚可以配置为多种不同的功能,如串口通信、SPI通信等。
    • 每个引脚通常有一个或多个复用功能,需要选择对应的复用功能编号。
  5. 输出类型(Output Type):

    • 输出类型字段用于配置引脚的输出类型,可以选择推挽输出或开漏输出。
    • 通常有一个位来表示一个引脚的输出类型,例如OT位。可以选择推挽输出或开漏输出。
    • 二种输出的区别:

      • 推挽输出(Push-Pull Output):
        •  在推挽输出模式下,引脚可以提供两种状态:高电平(逻辑1)和低电平(逻辑0)。
        • 当输出为高电平时,引脚会被连接到电源(例如VCC),从而输出高电平信号;当输出为低电平时,引脚会被连接到地(例如GND),从而输出低电平信号。
        • 推挽输出具有较低的输出阻抗,可以提供较强的驱动能力,适用于驱动各种负载,如LED、电机、传感器等。
        • 推挽输出适用于多种应用场景,常用于数字电路中。
      • 开漏输出(Open-Drain Output):
        •   在开漏输出模式下,引脚只能提供两种状态之一:低电平或者高阻态(开漏)。        
        • 当输出为低电平时,引脚被连接到地(例如GND),输出低电平信号;当输出为高阻态时,引脚处于高阻态,不提供电平信号。
        • 为了产生高电平信号,需要外部上拉电阻将引脚连接到电源(例如VCC)。这样,当引脚处于高阻态时,上拉电阻可以确保引脚上的电压为高电平。
        • 开漏输出具有较高的输出阻抗,驱动能力较弱,主要用于与其他器件进行电平匹配或者构建开漏总线(如I2C总线)等场景
    • 应用场景

      • 推挽输出的实际应用:
         
        • LED控制:LED灯通常通过推挽输出来控制。当输出为高电平时,LED亮起;当输出为低电平时,LED熄灭。

        • 电机驱动:在电机驱动电路中,推挽输出用于控制电机的正转和反转。通过控制两个推挽输出引脚的状态,可以控制电机的运动方向。

        • 数字信号输出:在数字信号输出场景中,推挽输出用于产生数字信号,如驱动蜂鸣器发出蜂鸣声、控制继电器等。

        • LCD控制:在液晶显示器(LCD)控制电路中,推挽输出用于控制LCD的各个像素点,实现图像显示。

      • 开漏输出的实际应用:
        • I2C总线:在I2C总线通信中,开漏输出用于构建总线的时钟线(SCL)和数据线(SDA)。多个设备可以共享同一条总线,通过开漏输出实现多主机通信。

        • GPIO级联:在多个GPIO设备之间进行级联连接时,开漏输出可以实现电平匹配。例如,在多个微控制器之间进行通信时,一个设备的开漏输出连接到另一个设备的输入引脚。

        • 模拟开关控制:在一些模拟电路中,开漏输出可以用作模拟开关控制。例如,在电源管理电路中,开漏输出可以用于控制电池充电和放电。

        • 多路选择器(MUX)控制:在多路选择器电路中,开漏输出可以用于控制选择器的通道。通过开漏输出,可以实现多个输入信号的选择和切换。

实际STM32应用中可以配置8种模式!

  • 输入数据寄存器(GPIOx_IDR):用于读取输入引脚的状态。
  • 输出数据寄存器(GPIOx_ODR):用于设置输出引脚的状态。

stm32f10x_gpio.h中,GPIO的模式配置的枚举类型是GPIOMode_TypeDef,具体的枚举值包括:

typedef enum
{GPIO_Mode_AIN = 0x0, // 模拟输入模式GPIO_Mode_IN_FLOATING = 0x04, // 浮空输入模式GPIO_Mode_IPD = 0x28, // 下拉输入模式GPIO_Mode_IPU = 0x48, // 上拉输入模式GPIO_Mode_Out_OD = 0x14, // 开漏输出模式GPIO_Mode_Out_PP = 0x10, // 推挽输出模式GPIO_Mode_AF_OD = 0x1C, // 复用开漏输出模式GPIO_Mode_AF_PP = 0x18 // 复用推挽输出模式
}GPIOMode_TypeDef;

这些枚举值表示了STM32F10x系列微控制器支持的8种GPIO模式配置,具体含义如下:

  1. GPIO_Mode_AIN:模拟输入模式,用于连接模拟信号输入。

  2. GPIO_Mode_IN_FLOATING:浮空输入模式,用于连接外部数字信号输入,不使用上拉或下拉电阻。

  3. GPIO_Mode_IPD:下拉输入模式,引脚上使用内部下拉电阻。

  4. GPIO_Mode_IPU:上拉输入模式,引脚上使用内部上拉电阻。

  5. GPIO_Mode_Out_OD:开漏输出模式,输出开漏状态,通常需要外部上拉电阻。

  6. GPIO_Mode_Out_PP:推挽输出模式,输出可通过输出寄存器直接控制高低电平。

  7. GPIO_Mode_AF_OD:复用开漏输出模式,用于复用功能,输出开漏状态。

  8. GPIO_Mode_AF_PP:复用推挽输出模式,用于复用功能,输出可通过输出寄存器直接控制高低电平。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/248072.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用AI工具一键生成原创文案的方法

一键生成原创文案对于文案工作者来说它是一种高效率创作文案内容的方法。文案工作者知道创作文案是一件消耗精力和时间的事情,遇到没有创作灵感,想要写一篇高质量的文案内容简直难上加难,因此,互联网上出现了一键生成原创文案的方…

Linux下安装edge

edge具有及其强大的功能,受到很多人的喜爱,它也开发Linux版本,下面是安装方法: 1.去edge官网下载Linux(.deb)文件。 https://www.microsoft.com/zh-cn/edge/download?formMA13FJ 2.下载之后输入以下指令(后面是安装…

【算法专题】贪心算法

贪心算法 贪心算法介绍1. 柠檬水找零2. 将数组和减半的最少操作次数3. 最大数4. 摆动序列(贪心思路)5. 最长递增子序列(贪心算法)6. 递增的三元子序列7. 最长连续递增序列8. 买卖股票的最佳时机9. 买卖股票的最佳时机Ⅱ(贪心算法)10. K 次取反后最大化的数组和11. 按身高排序12…

WPOpenSocial实现WordPress的QQ登录

个人建站不可避免的需要自己搭建用户数据库的问题,可用户却往往因为注册繁琐而放弃浏览您的网站,由此可见,一个社交账号一键登录方式尤为重要。选择适合您网站需求的社交插件,可以提升用户互动,增加社交分享&#xff0…

【C++】类和对象(一)

前言:在前面我们带大家初步步入了C,让大家大概知道了他的样子,那今天就可以说我们要正式步入C的大门了,这一章内容的细节比较多各位学习的时候一定要仔细。 💖 博主CSDN主页:卫卫卫的个人主页 💞 &#x1f…

Flink实战三_TableAPISQL

接上文:Flink实战二_DataStream API 1、Table API和SQL是什么? 接下来理解下Flink的整个客户端API体系,Flink为流式/批量处理应用程序提供了不同级别的抽象: 这四层API是一个依次向上支撑的关系。 Flink API 最底层的抽象就是有…

AR眼镜_ar智能眼镜显示方案|光学方案

AR眼镜是一种智能眼镜,能够将虚拟现实和现实世界相结合,使人们能够在日常生活中体验和参与虚拟现实。然而,AR智能眼镜的制造成本高,开发周期长。要实现AR眼镜的各项功能,需要良好的硬件条件,而AR智能眼镜的…

大专生能不能学习鸿蒙开发?

目前安卓有2,000万的开发者。本科及以上学历占比为35%;iOS有2,400万开发者,本科及以上学历占比为40% 绝大多数的前端开发者都是大专及以下学历,在2023年华为开发者大会上余承东透露华为的开发者目前有200万,但鸿蒙开发者统计的数据…

【Lazy ORM 整合druid 实现mysql监控】

Lazy ORM 整合druid 实现mysql监控 JDK 17 Lazy ORM框架地址 up、up欢迎start、issues 当前项目案例地址 框架版本描述spring-boot3.0.7springboot框架wu-framework-web1.2.2-JDK17-SNAPSHOTweb容器Lazy -ORM1.2.2-JDK17-SNAPSHOTORMmysql-connector-j8.0.33mysql驱动druid-…

Mac截图软件CleanShot X为什么不能识别文字?CleanShot X文字识别教程

好多朋友在使用CleanShot X for Mac截图软件过程中发现不能进行OCR文字识别?其实这是因为你没有给CleanShot X相应的权限导致的,具体操作如下: 第一步、打开,系统偏好设置-隐私与安全设置-完全磁盘访问权限 点击左下方➕ 在应用程…

vue2 国际化的使用,自动翻译文件,自动生成国际化文件

vue2 国际化的使用,自动翻译文件,自动生成国际化文件 npm i vue-i18n6 文件代码 // zh.js 用来写全局通用的国际化 export default {home:"首页" }//en.js 用来写全局通用的国际化 export default {home:"home page" }//kor.js …

Security ❀ HTTP/HTTPS逐包解析交互过程细节

文章目录 1. TCP三次握手机制2. HTTP Request 请求报文3. HTTP Response 响应报文4. SSL/TLS协议4.1. ClientHello 客户端Hello报文4.2 ServerHello 服务器Hello报文4.3. *ServerKeyExchange 服务公钥交换4.4. ClientKeyExchange 客户端公钥交换4.5. *CertificateVerify 证书验…

蓝桥杯---九数组分数

1,2,3 ... 9 这九个数字组成一个分数,其值恰好为1/3,如何组法? 下面的程序实现了该功能,请填写划线部分缺失的代码。 注意,只能填写缺少的部分,不要重复抄写已有代码。不要填写任何多余的文字。 代码 public class _05九数组分数 {public static void test(int[] x){int a …

[网鼎杯 2018]Fakebook1

join一个用户后,点进去发现是这样的 查看这个页面的源代码,发现一个base64编码后的字串 decode之后就是我们join新用户时填入的blog网址 那我们是不是可以通过填入存储flag的地址,从而回显出来呢?当然,先按照常规sqli…

C语言应用实例——贪吃蛇

(图片由AI生成) 0.贪吃蛇游戏背景 贪吃蛇游戏,最早可以追溯到1976年的“Blockade”游戏,是电子游戏历史上的一个经典。在这款游戏中,玩家操作一个不断增长的蛇,目标是吃掉出现在屏幕上的食物&#xff0c…

物联网IOT视频设备如何快速对接阿里云生活物联网(Link Visual)并成功上云?

原文永久更新地址:https://www.yundashi168.com/472.html 文章来源:猿视野 如果有图片看不清楚,加载不出来,请阅读原文。 什么是Link Visual、 Link Visual是生活物联网平台针对视频产品推出的增值服务,提供视频数据上…

第一节 分布式架构设计理论与Zookeeper环境搭建

目录 1. 分布式架构设计理论 1. 分布式架构介绍 1.1 什么是分布式 1.2 分布式与集群的区别 1.3 分布式系统特性 1.4 分布式系统面临的问题 2. 分布式理论 2.1 数据一致性 2.1.1 什么是分布式数据一致性 2.1.2 副本一致性 2.1.3 一致性分类 2.2 CAP定理 2.2.1 CAP定…

Habitat环境学习二:导航任务中的Habitat-sim基础Habitat-sim Basics for Navigation

导航任务在Habitat-sim任务中的实现 官方教程概述重要概念1、Hello World程序1.0.1 基础设置Basic settings1.0.2 模拟器设置Configurations for the simulator1.0.3 创建模拟器实例1.0.4 初始化Agent1.0.5 导航和探索 官方教程 Habitat是一个高效的真实的3D模拟器&#xff0c…

【C++进阶】STL容器--list使用迭代器问题分析

目录 前言 1. list的基本使用 1.1 list构造函数 1.2 list迭代器 1.3 list capacity 1.4 list元素访问 1.5 list 修改操作 insert erase swap resize clear 2. list失效迭代器问题 3. list使用算法库函数问题 总结 前言 list(链表)在C中非常重要…

OpenAI发布新模型!ChatGPT性能重磅提升,API大幅降价,GPT-4 「变懒」被修复

OpenAI 对ChatGPT进行了大更新:推出了新一代的嵌入模型,对GPT-4 Turbo模型进行了更新,并将很快对GPT-3.5 Turbo的API进行大幅降价,GPT-4「变懒」行为也被修复。 接下来二狗就带大家看看ChatGPT的这次详细更新。 推出新的嵌入模型…