STM32G0x0系列-点亮一盏灯(寄存器)

news2024/11/26 14:41:54

目录

输入功能

浮空输入:通俗讲就是让管脚什么都不接,悬空着。

上拉输入

下拉输入

模拟输入

输出功能

开漏输出

推挽输出

相关寄存器

GPIOx_MODER 端口模式寄存器

GPIOx_OTYPER 端口输出类型寄存器

GPIOx_ OSPEEDR 端口输出速度寄存器

GPIOx_PUPDR 上拉/下拉寄存器

GPIOx_IDR 端口输入数据寄存器

GPIOx_ODR 端口输出数据寄存器

GPIOx_BSRR 置位 / 复位寄存器

 输出试验:点亮一盏灯

》1.查看自己想要点亮的灯编号

​编辑

 》2.对比电路原理图

》3.编程实现

 结果:


输入功能

浮空输入:通俗讲就是让管脚什么都不接,悬空着。

此时VDD和VSS所在路径的两个开关同时断开。因为没有上拉和下拉,所以当IO口没有接输入的时候,此时的电平状态会是一个不确定的值,完全由外部输入决定。(一般实际运用时,引脚不建议悬空,易受干扰。 )

优势:这一种输入模式的电平会完全取决于外部电路而与内部电路无关

缺点:在没有外部电路接入的时候,IO脚浮空会使得电平不确定

应用:该模式是STM32复位之后的默认模式,一般用作对开关按键的读取或用于标准的通讯协议,比如IIC、USART的等

上拉输入

IO端口 - 上拉电阻 - 施密特触发器 - 输入数据寄存器 - 读

输入的电平不会因上下浮动而导致输入信号不稳定,当外部没有信号输入时,上拉电阻会将输入信号钳在高电平,此时引脚始终读到高电平信号。

下拉输入

IO端口 - 下拉电阻 - 施密特触发器 - 输入数据寄存器 - 读

输入的电平不会因上下浮动而导致输入信号不稳定,当外部没有信号输入时,下拉电阻会将输入信号钳在低电平,此时引脚始终读到低电平信号

模拟输入

未经任何处理的信号

信号进入后不经过上拉电阻或者下拉电阻,关闭施密特触发器,经由另一线路把电压信号传送到片上外设模块。 所以可以理解为模拟输入的信号是未经处理的信号,是原汁原味的信号。

应用:当 GPIO 引脚用于 ADC 采集电压的输入通道时,则需要选择“模拟输入”功能,因为经过施密特触发器后信号只有 0、1 两种状态,所以 ADC 外设要采集到原始的模拟信号,信号源输入必须在施密特触发器之前。

输出功能

开漏输出

输出寄存器上的'0'激活 N-MOS,而输出寄存器上的'1'将端口置于高阻状态 (P-MOS 从不被激活 )。

无法真正输出高电平,即高电平时没有驱动能力,需要借助外部上拉电阻完成对外驱动

可以利用改变上拉电源的电压来适应所需,进而提高外部电路的驱动能力。

  • 在推挽输出模式下,引脚可以提供两个状态的输出:高电平(Vcc)和低电平(GND)
  • 当引脚处于高电平状态时,它会提供一定的输出电流,以使外部设备工作在高电平逻辑状态。
  • 当引脚处于低电平状态时,它会提供接近零的输出电压,以使外部设备工作在低电平逻辑状态。
  • 推挽输出模式通常用于驱动主动电路(如LED、电机、显示器等),可以提供较高的驱动能力,适用于直接驱动大多数负载。

推挽输出

输出寄存器上的'0'激活 N-MOS,而输出寄存器上的'1'将激活 P-MOS,具备输出高低电平的能力。

当上面的MOS管导通时,GPIO输出高电平1,称为“”。

当下面MOS管导通时,GPIO输出低电平0,称为“”。

  • 在开漏输出模式下,引脚只提供低电平状态(GND)的输出。而在高电平状态时,引脚会断开,不提供输出电压
  • 在开漏模式下,引脚上有一个开漏晶体管,可以将引脚连接到GND,但不能将其连接到高电平(Vcc)。
  • 为了使引脚达到高电平状态,需要通过外部上拉电阻将引脚连接到Vcc。当引脚处于开漏状态时,它不提供输出电流,而是允许外部电路或器件通过上拉电阻拉高电平。
  • 开漏输出模式通常用于驱动被动电路(如信号线、总线等),可以实现多个开漏输出引脚的集线器功能,适用于需要共享总线或多点连接的情况。

相关寄存器

GPIOx_MODER 端口模式寄存器

GPIOx_OTYPER 端口输出类型寄存器

GPIOx_ OSPEEDR 端口输出速度寄存器

GPIOx_PUPDR 上拉/下拉寄存器

GPIOx_IDR 端口输入数据寄存器

GPIOx_ODR 端口输出数据寄存器

GPIOx_BSRR 置位 / 复位寄存器

 输出试验:点亮一盏灯

》1.查看自己想要点亮的灯编号

 》2.对比电路原理图

 

 

 让PB2引脚输出电平就可以点亮灯。

》3.编程实现

分以下几步:

第一步:必须开启GPIOB的时钟,开启时钟才能让单片机知道时间的概念

将GPIOBEN置为1,就能开启时钟

第二步:将PB2设置为输出模式

第三步:选择输出类型

 我选择了推挽输出

第四步:选择输出的电平信号

根据分析的结果添加代码,实现功能。

ps:csdn出了添加代码包功能,挺不错的,代码就放在上面了 

 

 结果:

 

 

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

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

相关文章

腾讯云服务器使用教程,手把手教你入门

腾讯云服务器使用教程包括注册账号实名认证、选择云服务器CVM或轻量应用服务器CPU内存带宽和系统盘配置、安全设置和云服务器远程连接、安全组端口开通教程、云服务器环境部署以搭建网站为例手把手网站上线,云服务器文件传输和数据备份以及技术支持等详细说明&#…

葵花(Himawari)8/9卫星数据处理

李国春 葵花8(含葵花9,下同)是静止气象卫星,数据范围是星下点为140E赤道上空的大圆盘。空间分辨率有500m、1km和2km三种。虽然其空间分辨率不高,但是有极高的时间分辨率,观测数据刷新仅10分钟。这对一些生…

数据结构中“树”的全面讲解

文章目录 一、树结构的定义与对比二、树的存储结构是什么,都有哪些存储结构?双亲表示法:孩子表示法:孩子兄弟表示法: 一、树结构的定义与对比 ​ 树结构是一种一对多的非线性结构,它是由n(n>…

第1关:ODBC程序设计

第1关:ODBC程序设计 任务描述相关知识ODBC主要功能ODBC接口主要函数ODBC应用程序开发实例DM ODBC应用程序开发总体流程DM ODBC代码编写流程DM ODBC代码编写实例 编程要求测试说明代码参考: 任务描述 本关任务:使用 ODBC 查询表中数据。 相关…

Seata分布式事务实战

目录 1 Seata1.1 Seata术语1.2 Seata AT模式1.2.1 AT模式及工作流程1.2.2 Seata-Server安装1.2.3 集成springcloud-alibaba 1.3 Seata TCC模式 2 Seata注册中心2.1 服务端注册中心配置2.2 客户端注册中心配置 3 Seata高可用 1 Seata Seata实现分布式事务基础知识:https://blog.…

“敏捷”又“精益”的新企架思想,如何指导项目实施?

就像“一千个读者眼中有一千个哈姆雷特”,企业也有一千种被看待的方式,例如消费者会用品牌和产品来描述企业;投资者会用盈利模式和盈利空间来评估企业,而“企业架构”则是企业管理者、架构师等用来精确描述企业的方式。 通过业务…

【C语言】语言篇——程序设计入门

C站的小伙伴们大家好呀!我最近在学习刘汝佳老师的《算法竞赛入门经典》,跟着这本书来学习和做习题,在这里和大家一起分享进步。下面是本书的第一部分的语言篇。 语言篇——程序设计入门 算术表达式变量及其输入顺序结构程序设计分支结构程序设…

1.1 什么是eBPF?(上)

大多数介绍eBPF的文章都是用“eBPF是一种革命性的内核技术”来描绘的。这样讲一点也不夸张。因为它允许在Linux的内核中执行沙盒程序,在不改变内核源码或加载内核模块的前提下直接地,安全地,快捷地扩展内核,并改变内核的行为。可以想像在运行时,将用户空间的eBPF程序加载到…

C4D R26 渲染学习笔记 建模篇(2):手动建模

介绍篇 C4D R26 渲染学习笔记(1):C4D版本选择和初始UI框介绍 C4D R26 渲染学习笔记(2):渲染流程介绍 C4D R26 渲染学习笔记(3):物体基本操作快捷键 建模篇 C4D R26 渲…

第一个servlet的程序

文章目录 一.Hello World的程序1.创建项目2.引入依赖3.创建目录4.编写代码5.打包程序6.部署程序7.验证程序 二.简化部署方式1.下载插件2.配置smart Tomcat插件3.测试插件 三.常见的servelt问题出现 404出现 405出现 500出现 "空白页面"出现 "无法访问此网站&quo…

图像风格迁移

一、简介 图像风格迁移是指,将一副内容图的内容,和一幅或多幅风格图的风格融合在一起,从而生成一些有意思的图片。 我们使用 TensorFlow 和 Keras 分别来实现图像风格迁移,主要用到深度学习中的卷积神经网络,即CNN。…

Transformer应用之构建聊天机器人(二)

四、模型训练解析 在PyTorch提供的“Chatbot Tutorial”中,关于训练提到了2个小技巧: 使用”teacher forcing”模式,通过设置参数“teacher_forcing_ratio”来决定是否需要使用当前标签词汇来作为decoder的下一个输入,而不是把d…

Linux:查看进程。

Linux:查看进程。 windows linux TTY如果是?说明是不是终端(控制台)启动的,而是系统内部自己启动的。 TIME是启动Linux后,这个进程一共占用了cpu多少时间00…

《Spring Guides系列学习》guide46 - guide50

要想全面快速学习Spring的内容,最好的方法肯定是先去Spring官网去查阅文档,在Spring官网中找到了适合新手了解的官网Guides,一共68篇,打算全部过一遍,能尽量全面的了解Spring框架的每个特性和功能。 接着上篇看过的gui…

《Python安全攻防:渗透测试实战指南》极致经典,学完即可包吃包住

前言 网络江湖,风起云涌,攻防博弈,从未间断,且愈演愈烈。从架构安全到被动纵深防御,再到主动防御、安全智能,直至进攻反制,皆直指安全的本质——攻防。未知攻,焉知防! 每一位网络安…

【Python】循环语句 ② ( while 嵌套循环 | 代码示例 - while 嵌套循环 )

文章目录 一、while 嵌套循环1、while 嵌套循环语法2、代码示例 - while 嵌套循环 一、while 嵌套循环 1、while 嵌套循环语法 while 嵌套循环 就是 在 外层循环 中 , 嵌套 内层循环 ; while 嵌套循环 语法格式 : while 外层循环条件:外层循环操作1外层循环操作2while 内存循…

VuePress + GitHub Actions 自动部署

文章目录 前言背景GitHub Actions简介基本概念引用 Actionworkflow 文件 自动部署创建 Action权限问题 小结参考文献 前言 我的第二本开源书籍《后台开发命令 365》上线啦。 为了方便阅读,使用 VuePress 将之前记录的后台常用 Linux 命令博文整理成一个系统的开源…

路径规划算法:基于阴阳对优化的路径规划算法- 附代码

路径规划算法:基于阴阳对优化的路径规划算法- 附代码 文章目录 路径规划算法:基于阴阳对优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要:本文主要介绍利用智能优化算法…

Compose 没有 inputType 怎么过滤(限制)输入内容?这题我会!

前言 闲话 在我之前的文章 《Compose For Desktop 实践:使用 Compose-jb 做一个时间水印助手》 中,我埋了一个坑,关于在 Compose 中如何过滤 TextField 的输入内容。时隔好几个月了,今天这篇文章就是来填这个坑的。 为什么需要…

Doris

Aggregate 模型 是相同key的数据进行自动聚合的表模型。表中的列按照是否设置了 AggregationType,分为 Key(维度列)和 Value(指标列),没有设置 AggregationType 的称为 Key,设置了 Aggregation…