【五一创作】《嵌入式系统》知识总结6:GPIO的结构和功能

news2024/12/27 16:27:34

GPIO的结构和功能

1.STM32提供通用的输入输出引脚(GPIO)

• 输出高低电平控制外设

• 输入0、1检测外设状态

2.可配置为复用的输入输出引脚(AFIO)

• 大多数GPIO都有默认的复用功能: 可作为片上外设(如串口、ADC等)的I/O引脚

• 部分GPIO还有重映射功能: 把原来是A引脚的默认复用功能,映射到B引脚使用

通用I/O端口GPIO

STM32F10x微控制器有7组通用I/O端口

• 用GPIOx(x是A、B、C、D、E、F、G)表示 即GPIOA、GPIOB、 ……GPIOG

• 每组端口有16个引脚 分别用Px0、Px1、 ……Px15(x是A~G)表示

每个引脚可以由软件分别配置成多种模式:

• 浮空输入/上拉输入/下拉输入/模拟输入;

• 开漏输出/推挽式输出;

• 推挽式复用功能/开漏复用功能

GPIO工作方式

输入模式

浮空输入模式

输出缓冲器被禁止,施密特触发输入被激活,不接上拉和下拉电阻,出现在I/O脚上的数据在每个APB2时 钟被采样到输入数据寄存器

上拉输入模式

输出缓冲器被禁止,施密特触发输入被激活,上拉电 阻接通,不接下拉电阻,当I/O引脚无输入信号时, 读取到的数据为1,即高电平

下拉输入模式

输出缓冲器被禁止,施密特触发输入被激活,上拉电 阻不接,下拉电阻接通,当I/O引脚无输入信号时, 读取到的数据为0,即低电平

模拟输入模式

输出缓冲器被禁止,禁止施密特触发输入,实现了每个模拟I/O 引脚上的零消耗。施密特触发输出值被强置为’0’ ;上拉和下拉 电阻被禁止; I/O引脚的信号交由片上外设(比如ADC)处理。

输出模式

推挽输出

输出缓冲器被激活,施密特触发输入被激活,上拉电阻和下拉 电阻被禁止,若通过输出数据寄存器输出1,则P-mos管导通, N-MOS管截止,I/O脚得到高电平;输出0,则相反

复用推挽输出

开漏输出

输出缓冲器被激活,施密特触发输入被激活,上拉电阻和下拉 电阻被禁止,输出寄存器上的’0’激活N-MOS,端口得到低电平; 而输出寄存器上的’1’将端口置于高阻状态(P-MOS从不被激活)。

复用开漏输出

输出对比

• 推挽输出: 可以输出高低电平,连接数字器件,两个MOS管轮流导通,使其负载能力 和开关速度都比普通方式有很大提高

• 开漏输出: 只可以输出低电平,高电平得靠外部电阻拉高。输出端相当于三极管的集电 极。要得到高电平状态需要上拉电阻才行,适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内)。

• 非复用输出方式其输出值由cpu执行指令控制,复用 输出方式其输出值来自片上外设

输出引脚的速度:2Mhz / 5Mhz / 50Mhz

• “速度”指输出驱动电路的响应速度,并不是输出信号的速度。芯片内部在 I/O口的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据 自己的需要选择合适的驱动电路,通过选择速度来选择不同的输出驱动模 块,达到最佳的噪声控制和降低功耗的目的。

• GPIO的引脚速度应与应用相匹配,如果输出信号的频率超过了驱动电路的 响应速度,就有可能信号失真。(比如:信号频率为10MHz,而你配置了 2MHz的带宽,则10MHz的方波很可能就变成了正弦波),另一方面,速度 配置越高,噪声越大,功耗越大。

• 常用的选择:

① USART串口,若最大波特率只需115.2k,那用2M的速度就够了,既省 电也噪声小。

② I2C接口,若使用400k波特率,若想把余量留大些,可以选用10M的 GPIO引脚速度。

③ SPI接口,若使用18M或9M波特率,需要选用50M

• 当GPIO的I/O引脚配置为输入模式时,不需要配置输出速度。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于MobileNet的人脸表情识别系统(MATLAB GUI版+原理详解)

摘要:本篇博客介绍了基于MobileNet的人脸表情识别系统,支持图片识别、视频识别、摄像头识别等多种形式,通过GUI界面实现表情识别可视化展示。首先介绍了表情识别任务的背景与意义,总结近年来利用深度学习进行表情识别的相关技术和…

android基础知识

架构: 应用框架层(Java API Framework)所提供的主要组件: 名称功能描述Activity Manager(活动管理器)管理各个应用程序生命周期,以及常用的导航回退功能Location Manager(位置管理器…

智能是逻辑吗?

智能是指人或机器能够理解、学习、推理、解决问题和适应环境的能力。而逻辑是一种推理方式,它是智能中的一部分,帮助我们正确地推理和理解信息。逻辑能够提高我们的思考能力、解决问题的能力和决策能力,但智能还包括其他方面,如感…

数据结构课程——第一次作业

T1:Gram_ham实现凸包算法&#xff1a; &#xff08;1&#xff09;思路&#xff1a; &#xff08;2&#xff09;代码&#xff1a; #include<iostream> #include<string> #include<vector> #include<algorithm> #include<stack>using namespace …

存储网络架构——DAS、NAS、SAN、分布式组网架构

目录 DAS直连式存储 NAS网络附加存储 SAN存储 存储区域网络 分布式存储组网 DAS直连式存储 DAS遇到的挑战 NAS网络附加存储 向主机提供文件服务&#xff1b;文件系统由存储设备维护&#xff0c;用户访问文件系统&#xff0c;不直接访问底层存储 拥有所有主机上文件与底层存储空…

图像复原与重建

文章目录 一、实验目的二、实验内容1. 噪声图像及其直方图。2. 空间噪声滤波器。3. 逆滤波。 一、实验目的 了解一些常用随机噪声的生成方法。掌握根据指定退化函数对图像进行退化的方法。掌握当模糊图像只存在噪声时的几种滤波复原方法。掌握当模糊图像同时存在线性退化和噪声…

OpenCV C++案例实战三十一《动态时钟》

OpenCV C案例实战三十一《动态时钟》 前言一、绘制表盘二、绘制刻线三、获取系统时间四、结果展示五、源码总结 前言 本案例将使用OpenCV C实现动态时钟效果。原理也很简单&#xff0c;主要分为绘制表盘、以及获取系统时间两步。 一、绘制表盘 首先为了效果显示美观一点&…

数据驱动测试、结果报告生成,Python接口自动化测试全方位解析

B站首推&#xff01;2023最详细自动化测试合集&#xff0c;小白皆可掌握&#xff0c;让测试变得简单、快捷、可靠https://www.bilibili.com/video/BV1ua4y1V7Db 目录 一、背景 二、准备工作 三、编写测试脚本 四、数据驱动测试 五、结果报告生成 六、总结 七、参考链接 …

线性表,顺序表,链表

线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列 线性表是一种在实际中广泛使 用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构&#xff0c;也就说是连续的一条直线 …

阿里云对象存储OSS使用 HTTPS访问

阿里云对象存储OSS使用 HTTPS ​ 在部署项目的时候遇到了一个问题&#xff0c;就是https页面访问http资源报错的问题。 问题&#xff1a; 写了一个前端项目在云服务器部署&#xff0c;我的域名申请了ssl证书并在云服务器nginx部署&#xff0c;所以页面是https页面&#xff0c;但…

Ansible的脚本-playbook 剧本

目录 1.剧本&#xff08;playbook&#xff09; 1.playbook介绍 2. playbooks 的组成 3.案例&#xff1a;编写httpd的playbook 4.定义、引用变量 5.指定远程主机sudo切换用户 6.when条件判断 7.迭代 2.playbook的模块 1.Templates 模块 2.tags 模块 3.Roles 模块 1.…

TCP协议——这篇文章GET全

TCP协议文章目录 1. UDP和TCP协议的比较1.1 UDP协议1.2 TCP协议1.3 特点比较 2. TCP协议建立连接的三次握手3. TCP协议断开连接的四次挥手4. TCP协议的几个特性4.1 确认应答4.2 超时重传4.3 连接管理4.4 滑动窗口4.5 流量控制4.6 拥塞控制 1. UDP和TCP协议的比较 UDP和TCP作为…

多维时序 | MATLAB实现BP神经网络多变量时间序列预测(考虑历史特征的影响,多指标、多图输出)

多维时序 | MATLAB实现BP神经网络多变量时间序列预测(考虑历史特征的影响,多指标、多图输出) 目录 多维时序 | MATLAB实现BP神经网络多变量时间序列预测(考虑历史特征的影响,多指标、多图输出)预测效果基本介绍程序设计学习总结参考资料预测效果 基本介绍 MATLAB实现BP神经网…

Java中的Reflection(反射)、暴力反射

文章目录 1. 反射(Reflection)的概念1.1 反射的出现背景1.2 反射概述1.3 Java反射机制研究及应用1.4 反射相关的主要API1.5 反射的优缺点 2. Class类并获取Class实例2.1 理解Class2.1.1 理论上2.1.2 内存结构上 2.2 获取Class类的实例(四种方法)2.3 哪些类型可以有Class对象2.4…

Windows安装rabbitmq

Windows安装rabbitmq 一、下载1、下载erlang2、下载rabbitmq 二、安装1、安装erlang2、安装rabbitmq3、简单使用 一、下载 1、下载erlang 点击右侧下载地址&#xff0c;跳转下载&#xff0c;点击下载 跳转后&#xff0c;点击download windows install即可下载。 2、下载rab…

微服务---分布式缓存redis进阶-redis集群部署

分布式缓存 – 基于Redis集群解决单机Redis存在的问题 单机的Redis存在四大问题&#xff1a; 0.学习目标 1.Redis持久化 Redis有两种持久化方案&#xff1a; RDB持久化AOF持久化 1.1.RDB持久化 RDB全称Redis Database Backup file&#xff08;Redis数据备份文件&#xf…

基于Kali搭建SSH弱口令靶机并用Nmap实现排查

前言正文1、为宿主主机配置nmap环境变量2、为宿主主机和靶机配置同一局域网环境3、为靶机配置弱口令4、为靶机配置SSH服务[^2]5、主机用Nmap对靶机进行扫描5、主机用弱口令工具对靶机渗透6、验证弱口令 参考文献 前言 有时候&#xff0c;需要我们搭建SSH弱口令环境&#xff0c…

【数据结构】超详细之单向链表(C语言实现)

文章目录 前言一、单向链表是什么&#xff1f;二、单向链表实现步骤 1.打印链表数据以及实现链表头插2.实现链表尾插3.实现链表头删尾删4.实现链表查找5.实现链表在pos之前/之后插入6.实现链表删除pos位置的值7.实现链表删除pos之后位置的值总结 前言 今天我要介绍单向链表&am…

可变参数列表的使用与原理

序言 我们自己编写的函数通常参数是固定的&#xff0c;这样使得某些功能不能得到我们想要的结果&#xff0c;比如我们想求出2个数的最大值的代码不能用于求处3个数的最大值&#xff0c;因此&#xff0c;C语言定义了可变参数列表来编写参数个数不确定的函数。具有可变参数列表的…

Golang每日一练(leetDay0054)

目录 157. 用 Read4 读取 N 个字符 Read-n-characters-given-read4 &#x1f31f;&#x1f31f; 158. 用 Read4 读取 N 个字符 II Read-n-characters-given-read4-ii-call-multiple-times II &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Gol…