【外设零基础通用教程】GPIO 下

news2025/1/4 11:12:31

【外设零基础通用教程】GPIO 下

  • 使用方法
    • GPIO 值
      • 输入读取值
      • 输出设置值
  • GPIO输入输出应用
    • GPIO输入应用
    • GPIO输出应用
    • 文档使用
  • 理论补充
    • 输出方式
      • 推挽输出
      • 开漏输出

上篇连接:【外设零基础通用教程】GPIO 上,主要是在做视频的时候,发现上篇理论很多,分开的话结构清晰一些,更方便观看。

虽然我们定义GPIO的输入输出,那我们这种按键和LED都有两种状态,按下了和没按下,亮了和没亮,这怎么表示?


使用方法

GPIO 值

在电子电路中,分别用1和0记录电压高低状态!!!

#对于GPIO的输入,可以直接读取:

cs.value()  # 返回1或者0

#对于GPIO的输出,我们可以使用下面方法控制:

cs.high()    #设置高电平
cs(1)          # 1为高电平
cs.low()     #设置低电平
cs(0)          # 0为低电平

输入读取值

比如说,按钮按下后给了开发板一个值1,开发板收到这个状态的得时候就知道这个按键被按下了。
那么我按下的时候读取的值就为1。其实就是简单的记录状态。

输出设置值

这个理解就简单了,LED收到高电平信号1的时候就量,低电平0的时候就灭。所以呀我们就设置这个引脚的高低状态就行了~

注意:上面仅是GPIO这个外设引脚可以这样理解,像什么IIC,SPI这种,这么理解可能就~

GPIO输入输出应用

GPIO输入应用

祖传按键

from pyb import Pin
#将 USR 按键-"X17"配置为输入方式
p_in = Pin('X17', Pin.IN, Pin.PULL_UP)
p_in.value()  

在这里插入图片描述

GPIO输出应用

祖传点灯

from pyb import Pin

#将 LED(1)-"A13"配置成推挽输出模式
p_out=Pin('A13',Pin.OUT_PP)

#点亮 LED(1)红灯
p_out.high()  

在这里插入图片描述
好了,我们现在就可以直接做简单按键控制和LED灯控制了。~就这么简单。

文档使用

我们之前说过,由于封装不同,GPIO的写法也不同。所以买板子之前一定先看看文档。如micpython和maixpy对GPIO的写法如下(这俩都是python哈)
在这里插入图片描述

理论补充

输出方式

GPIO的输出和内部MOS关的开关有关,如下图。可知输出有3种状态。
在这里插入图片描述
分别是高电平,低电平,浮空/高阻态。

冒烟状态就是直接G了,厂家要出厂这种开发板,不得被打死。这里指代不会出现的情况,不做考虑

推挽输出

推挽输出,电子专业名词,一般出现在推挽放大器电路中,可以输出高,低电平,连接数字器件;推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止。

在这里插入图片描述
有高低信号状态的叫推挽

VCC是电,开发板内部给传感器放电就是高电平
GND是地,是传感器给开发板内部放电就是低电平
“高电流向低电doge 上面把是付出把电推出去,下面是回首掏简称挽”
简单这么理解就行了。

开漏输出

开漏输出,开漏电路概念中提到的"漏"就是指MOS FET的漏极。同理,开集电路中的"集"就是指三极管的集电极。开漏电路就是指以MOS FET的漏极为输出的电路。

在这里插入图片描述
有低电和悬空/高阻态状态的叫开漏

上面的P-MOS不是没有了,而是这种状态下和P-MOS没啥关系,为了方便看,我给删了。
你瞅瞅,现在的情况是只有地(GND)只能传感器给他电,有低电平状态。

如果N-MOS关掉后相当于电阻无限大(谁也不给谁电,谁也动不了,相当于没有电流在动。)所以这个状态下,输出的是低电平和浮空/高阻态。

所以明白为什么我们日常使用GPIO输出是,定义的推挽模式了么~

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

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

相关文章

[composer-unused]扫描代码找出没有使用的依赖

composer-unused是一个使用PHP开发的命令行工具,就像composer一样,只不过它的作用是扫描出代码中,加载了依赖但没有实际使用的库。 使用分析 像我之前做过的一个项目,扫描结果如下图: 其中可以发现在composer.json中…

【网络】网络层协议——IP

目录网络层IP协议IP基础知识IP地址IP报头格式网段划分CIDR特殊的IP地址IP地址的数量限制私有IP地址和公有IP地址路由IP总结网络层 在复杂的网络环境中确定一个合法的路径。 IP协议 IP协议作为整个TCP/IP中至关重要的协议,主要负责将数据包发送给最终的目标计算机…

对USB协议的通俗理解

目录简介背景特点版本USB数据流模型总线拓扑结构USB通信流端点管道电气标准USB接口类型USB Type-AUSB Type-BUSB Type-CPIN脚定义4PIN9PIN5PIN24PIN16PIN6PINUSB数据传输相关概念通讯方式通讯方向同步方式帧和微帧USB数据格式域包令牌包数据包握手包特殊包事务IN事务OUT事务SET…

BM37-二叉搜索树的最近公共祖先

题目 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 对于该题的最近的公共祖先定义:对于有根树T的两个节点p、q,最近公共祖先LCA(T,p,q)表示一个节点x,满足x是p和q的祖先且x的深度尽可能大。在这里,一个节点也可以是它自己…

CSC国家公派项目网上申报今天启动/附应提交材料及说明

今天(4月10日)是2023年国家公派高级研究学者、访问学者、博士后项目开始申报的日期,知识人网小编提醒申请者关注,同时附上该项目的应提交材料及说明。 根据国家留学基金委(CSC)通知精神,2023年国…

typora和C51开发环境

经过查阅,可以用wiz和typora联动的方式记录笔记,这样一个文件夹里既可以用typora也可以用内置编辑器(一种富文本编辑器),注意同一个文件不能用不同的编辑器,否则会错乱。以下,我列举了用typora的…

extern 关键字

参考https://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777431.html 1 基本解释 extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定…

k8s调度器扩展(Scheduler Framework)、源码编译及部署

因为研究的需要,需要对K8S的调度器进行扩展,本文主要讲解了k8s调度器扩展的一个流程,其中包含源码修改、源码编译、调度器配置以及部署和本人所踩的一些坑,使用的k8s的版本为1.23.1 1.下载源码,在此选择v1.23.1版本&a…

大数据之Spark部署模式

文章目录前言一、Spark的部署模式(一)Client模式1. Standalone集群下的Client模式2. Spark On Yarn集群下的Client模式(二)Cluster模式1. Standalone集群下的Cluster模式2. Spark On Yarn集群下的Cluster模式总结前言 #博学谷IT学…

c++头文件、namespace 的理解、#include、 编译模式

namespace C 命名空间 | 菜鸟教程 C命名空间(名字空间)详解 作用:多写在头文件中,用于多个头文件的变量函数出现重命名。 namespace中可以定义变量,函数,类等等,也可以写声明,来…

牛客网 HJ28 素数伴侣【二分图匹配,匈牙利算法】困难

描述 若两个正整数的和为素数,则这两个正整数称之为“素数伴侣”,如2和5、6和13,它们能应用于通信加密。现在密码学会请你设计一个程序,从已有的 N ( N 为偶数)个正整数中挑选出若干对组成“素数伴侣”&am…

一种用于水位量测的浮子水位计

简介 浮子式水位传感器(带水位显示)是集机、电技术于一体的数字化传感器。通过输出轴的角度位移量转换成相应的数字量,可以高精度测量被测液位高度,能确认准确位置。具有断电记忆功能。 其工作原理就是:水位传感器测轮…

二叉搜索树(BSTree)

目录 一、二叉搜索树 二、二叉搜索树的接口及实现 1、二叉搜索树的查找 2、二叉搜索树的插入 3、二叉搜索树的删除 三、二叉搜索树的递归版本 本期博客主要分享二叉搜索树的底层实现。(主要是笔记,供自己复习使用😂) 一、二叉搜索树 二叉搜索树(B…

Github创建组织(organization)

目录 前言 Github上创建组织的详细步骤 前言 创建 Github 组织(Organization)可以让你和你的团队共享代码,更好地管理和协作开发项目。Github 组织(Organization)是一个非常有用的工具,可以让开发者协同…

stm32cubemx IAP升级(一)

stm32cubemx IAP升级- Bootloader的制作 板卡:Nucleo-L412 平台:macbook pro 工具:vscode stm32cubemx stm32cubeProgramer cmake toolchain 分区 L412 自带128K的flash,所以我们可以这样分区, printf(“| flash pr…

crypto-js AES-CTR 实现密文前缀式局部解密细节 踩坑点

项目有需求,长明文经过AES-CTR模式加密后,在解密的时候,密文不能直接得到,每次通过某些方法尝试后,只能得到一块密文(按顺序),所以只能一块一块的拼接解密。在使用crypto-js这个库的…

WooCommerce可扩展性:如何扩大您的WooCommerce商店

有了合适的人和技术,WooCommerce可扩展性绝对是很大的! 事实上,使用WooCommerce作为您的电子商务平台,您的在线商店的规模可以与您的目标和愿望一样大! 根据自定义模板开发高性能品牌电子商务网站 全球超500万个电商…

高效办公——Excel表格-02篇(if函数常见用法 + 条件格式的使用)

高效办公——Excel表格-02篇(if函数常见用法 条件格式的使用)1. if单条件简单用法1.1 简单需求1.2 实现方法2. if多条件使用(if-else的情况)3. if多条件使用(if(A && B)的情况)3.1 简单需求3.2 实现需求4. if多条件使用(if(A || B)的情况)5. 条…

亚马逊云科技“三步走”,实现区块链应用的快速开发

作为数字技术的代表之一,区块链技术正在被越来越多的企业所重视,并被引入到各行业的数字化转型中。根据中国通信院数据显示,目前中国区块链应用场景主要以金融和互联网为主,但应用范围呈现不断拓展的态势,政务数据共享…

day10_oop

今日内容 零、 复习昨日 一、面向对象的概念 二、面向对象编程 三、内存图 零、 复习昨日 晨考复习… 一、作业 package com.qf.homework;import java.util.Arrays;/*** --- 天道酬勤 ---** author QiuShiju* desc* ----------------* 引用数据类型的默认初始值null*/ public …