STM32 GPIO介绍

        每个GPI/O端口有两个32位配置寄存器(GPIOx_CRL, GPIOx_CRH),两个32位数据寄存器
(GPIOx_IDR和GPIOx_ODR),一个32位置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR)。

通过软件配置寄存器可将GPIO分配以下几种模式:

        ─ 输入浮空
        ─ 输入上拉
        ─ 输入下拉
        ─ 模拟输入
        ─ 开漏输出
        ─ 推挽式输出
        ─ 推挽式复用功能
        ─ 开漏复用功能

        每个I/O端口位可以自由编程,然而必须按照32位字访问I/O端口寄存器(不允许半字或字节访
问)。 GPIOx_BSRR和GPIOx_BRR寄存器允许对任何GPIO寄存器进行读/更改的独立访问;这
样,在读和更改访问之间产生IRQ时不会发生危险。

下图给出了一个I/O端口位的基本结构:

(下列所有图中的TTL肖特基触发器为施密特触发器)


5伏兼容I/O端口位的基本结构:

VDD_FT 对5伏容忍I/O脚是特殊的,它与VDD不同
 

当I/O端口配置为输入时:
● 输出缓冲器被禁止
● 施密特触发输入被激活
● 根据输入配置(上拉,下拉或浮动)的不同,弱上拉和下拉电阻被连接
● 出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器
● 对输入数据寄存器的读访问可得到I/O状态

输入浮空/上拉/下拉配置:

当I/O端口被配置为输出时:
● 输出缓冲器被激活
─ 开漏模式:输出寄存器上的’0’激活N-MOS,而输出寄存器上的’1’将端口置于高阻状态(PMOS从不被激活)。
─ 推挽模式:输出寄存器上的’0’激活N-MOS,而输出寄存器上的’1’将激活P-MOS。
● 施密特触发输入被激活
● 弱上拉和下拉电阻被禁止
● 出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器
● 在开漏模式时,对输入数据寄存器的读访问可得到I/O状态
● 在推挽式模式时,对输出数据寄存器的读访问得到最后一次写的值。

输出配置:

当I/O端口被配置为复用功能时:
● 在开漏或推挽式配置中,输出缓冲器被打开
● 内置外设的信号驱动输出缓冲器(复用功能输出)
● 施密特触发输入被激活
● 弱上拉和下拉电阻被禁止
● 在每个APB2时钟周期,出现在I/O脚上的数据被采样到输入数据寄存器
● 开漏模式时,读输入数据寄存器时可得到I/O口状态
● 在推挽模式时,读输出数据寄存器时可得到最后一次写的值
 

复用功能配置:

当I/O端口被配置为模拟输入配置时:
● 输出缓冲器被禁止;
● 禁止施密特触发输入,实现了每个模拟I/O引脚上的零消耗。施密特触发输出值被强置
为’0’;
● 弱上拉和下拉电阻被禁止;
● 读取输入数据寄存器时数值为’0’。
 

高阻抗的模拟输入配置:

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

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

相关文章

人工智能编程的创新探索 卧龙与凤雏的畅想

在一间宽敞明亮的办公室内,阳光透过窗户洒在地上,形成一片片光斑。卧龙和凤雏正坐在舒适的办公椅上休息,享受着这片刻的宁静。 卧龙微微皱眉,一只手托着下巴,略显苦恼地说道:“现在的人工智能,也…

【运维】如何安装ubuntu-24.04? 如何分区?

如何安装ubuntu-24.04?如何分区 经过一系列折腾,我总结了这几点: (1)在BIOS启动设置里,如果是GPT的硬盘格式,那么对应的就是UEFI的启动方式;如果是MBR的硬盘格式,那么对…

Julia 语言环境安装与使用

1、Julia 语言环境安装 安装教程:https://www.runoob.com/julia/julia-environment.html Julia 安装包下载地址为:https://julialang.org/downloads/。 安装步骤:注意(勾选 Add Julia To PATH 自动将 Julia 添加到环境变量&…

Windows下启动Tomcat显示乱码解决办法

1、Windows下启动Tomcat显示乱码 2、解决办法 找到 D:\apache-tomcat-9.0.89\conf下的logging.properties,找到java.util.logging.ConsoleHandler.encoding的值改为GBK,就可以了 完美解决!显示正常的中文了

基于Nios-II的流水灯

基于Nios-II的流水灯 一、Qsys设计(一)新建项目(二)Platfrom Designer(三)设置时钟主频(四)添加Nios-II Processor并设置(五)添加JTAG并配置(六&a…

Ubuntu 下串口工具:Minicom、CuteCom 和 Screen

在 Ubuntu 中,对于串口通信工具的选择,虽然没有一个绝对的 “最好用” 的排名,但根据用户反馈和工具的流行程度,Minicom、CuteCom 和 Screen 这三个工具通常被认为是较为受欢迎和实用的。 一、简介: Minicom&#xff…

Flink DataSource介绍

介绍 Flink的Data Source(数据源、源算子)是Flink作业的起点,它定义了数据输入的来源。Flink可以从各种数据来源获取数据,例如文件系统、消息队列、数据库等。以下是对Flink Data Source的详细介绍: 概述&#xff1a…

onlyoffice容器打包成镜像

书接上篇,onlyoffice容器已经更改在本地docker环境中了,之后需要部署到测试环境的docker中,采用容器打包成本地镜像 1、本地docker 查看容器:docker ps 生成镜像:docker commit -p blissful_lichterman 重命名镜像&a…

Python 框架安全:Django SQL注入漏洞测试.(CVE-2021-35042)

什么是 Django 框架 Django 是一个用 Python 编写的 Web 应用程序框架。它提供了许多工具和库,使得开发 Web 应用程序变得更加容易和高效。Django 遵循了“MTV”(模型-模板-视图)的设计模式,将应用程序的不同组件分离开来&#x…

Linux-进程管理类命令实训

实训1:进程查看,终止,挂起及暂停等操作 1.使用ps命令显示所有用户的进程 2.在后台使用cat命令。查看进程cat,并杀死进程 3.使用top命令只显示某一用户的进程。 4.执行命令cat,把Ctrlz挂起进程,输入jobs命令…

Davinci工程CAN模块讲解

CAN模块是用来配置CAN Driver的,里面有CanConfigSet是用来配置驱动内容的,CanGeneral配置参数。涉及四个文件Can_Lcfg.c/Can_Lcfg.h/Can_Cfg.c/Can_Cfg.h CanConfigSet CanControllers CAN控制器,我们这里的CAN控制器只有一个,名…

WLAN-二层隧道转发

拓扑图 配置 由于AP无法识别带VLAN Tag 254的帧,所以交换机连接AP的Trunk接口要配置PVID 隧道转发模式,AC上 配置所需VLAN 10 254 AP上线认证方式默认为MAC认证,实验中配置为无认证 可创建AP组,或直接在AP中引用VAP配置文件 …

一张贴纸50万,炒房炒币的怎么都来炒CSGO皮肤了

一张贴纸50万,为什么炒房炒币的都来炒CSGO饰品了? 一张贴纸50万,炒房炒币的怎么都来炒CSGO皮肤了? 经常有人问我,天天看你们买卖装备,买卖皮肤,说到底这都是虚拟产品,看得见摸不着的…

机房——蓝桥杯十三届2022国赛大学B组真题

问题分析 这题用深搜广搜都能做,不过我更倾向于用广搜,因为广搜能更容易找到目标点。那么是采用结构体存储边还是采用二维数组存储临接矩阵呢?我们注意到n的取值范围为1e5,用二维数组哪怕是bool类型就需要至少1e10Byte的连续空间,这个空间太大…

docker-本地私有仓库、harbor私有仓库部署与管理

一、本地私有仓库: 1、本地私有仓库简介: docker本地仓库,存放镜像,本地的机器上传和下载,pull/push。 使用私有仓库有许多优点: 节省网络带宽,针对于每个镜像不用每个人都去中央仓库上面去下…

RabbitMQ(Docker 单机部署)

序言 本文给大家介绍如何使用 Docker 单机部署 RabbitMQ 并与 SpringBoot 整合使用。 一、部署流程 拉取镜像 docker pull rabbitmq:3-management镜像拉取成功之后使用下面命令启动 rabbitmq 容器 docker run \# 指定用户名-e RABBITMQ_DEFAULT_USERusername \# 指定密码-e R…

C++初识多态(1)

1.多态要解决的问题(引入) 任何一种机制的存在,必然是有其存在的意义的,例如我们前面学过的函数重载,运算符重载,以及引用等等,都是解决一些特殊问题的; 下面通过一些具体的例子&a…

ICLR 2024 杰出论文奖揭晓!两篇国内论文获荣誉提名

国际学习表征会议( International Conference on Learning Representations,简称ICLR),于5月7日至11日在奥地利维也纳展览会议中心举行。 ICLR与NeurIPS(Conference on Neural Information Processing Systems&#x…

C++笔试强训day15

目录 1.平方数 2.分组 Check函数的具体实现&#xff1a; 3.拓扑排序 1.平方数 链接 数学找规律&#xff0c;找离 x 最近的完全平方数 y。 先开平方根再利用四舍五入进位即可。 详细代码&#xff1a; #include <cmath> #include <iostream> using namespac…

基于Transformer网络的多步预测模型

包括完整流程数据代码处理&#xff1a; 多步预测数据集制作、数据加载、模型定义、参数设置、模型训练、模型测试、预测可视化、多步预测、模型评估 ● 环境框架&#xff1a;python 3.9 pytorch 1.8 及其以上版本均可运行 ● 使用对象&#xff1a;论文需求、毕业设计需求者…