视觉开发板—K210自学笔记(五)--按键控制LED

本期我们来遵循其他单片机的学习路线开始去用板子上的按键控制点亮LED。那么第一步还是先知道K210里面的硬件电路是怎么连接的,需要查看第二节的文档,看看开发板原理图到底是按键是跟哪个IO连在一起。然后再建立输入按键和GPIO的映射就可以开始变成了。

  • 硬件电路

根据之前官方提供的assembly drawing资料我们能知道了实际的LED位置,同样我们来

找一下按键的位置。

        

通过分析电路图我们可以看出实体按键一共有两个,S1和S2,分别连接了RST和BOOT引脚。但是通过查找RST可以看出,直接连接到了SGM803T这个芯片上,它是一个电源管理芯片,所以我们无法通过设计RST的映射去进行编程操作。固我们可以控制的只有BOOT引脚对应的按键了,查询CPU那侧可以看到它连接的物理引脚是IO_16,这个我们是可以通过程序对BOOT进行配置的。

  • 程序开发

上一节我们提到了GPIO和IO的区别,注意要区分 GPIO  IO的区别, IO也可以叫Pin 也就是引脚,是芯片引出来的硬件引脚, GPIO是一种外设,可以控制这些Pin/IO 的外设。两者可以有一种方法映射,就像一道桥一样连接他们。因为有了这个强大的映射功能, 所以在使用引脚时,需要增加一步映射的步骤:

from fpioa_manager import fm    # 导入库类似C语言的头文件

fm.register(28, fm.fpioa.GPIO0)

这里我们将引脚 28 映射为了 GPIO0 的功能, 执行了这句命令后,引脚28和GPIO0就映射(绑定)好了,要取消映射(解绑),则需要调用fm.unregister函数,如fm.unregister(28)可取消引脚28的绑定。

这是之前讲过的内容,接下来结合官方文档总结一下如何将某 IO 注册为 GPIO 功能。

先引入头文件

from Maix import GPIO

from fpioa_manager import fm

上述的程序中,我能怎么知道引入什么库才能使用呢,也就是说唯一未知的头文件是如何引入的呢?看下图:

通过上述的官方文档截图可以看出,文档提供的API手册中提供了所有的库的名称和使用说明供给开发者使用。

然后将IO注册为GPIO,

fm.register(io_number,fm.fpioa.GPIO0)

设置 GPIO 为输入或输出模式,GPIO调参的用法可以参考上述提到的官方文档,有详细的说明和示例。

gpio=GPIO(GPIO.GPIO0,GPIO.OUT)

接下来就是如何使用了:和C语言的结构体类似的操作,读取或设置 GPIO 电平

gpio.value()  #直接在括号内赋值即可配置成输出

经过以上流程的总结,希望大家对整个的程序架构有一个基本的概念,学过STM32的同学可能会很好的接收以上的事实。新手的同学需要记住以上的步骤,基本上调用IO都是这个流程。

那么我们接下来完成今天的任务,按键控制LED的操作。

from Maix import GPIO                                            #引入头文件

from fpioa_manager import fm



io_led_blue = 12                           #根据原理图对应IO引脚

io_led_red = 13

io_key = 16



fm.register(io_led_blue, fm.fpioa.GPIO0)       #映射IO到GPIO

fm.register(io_led_red, fm.fpioa.GPIO1)

fm.register(io_key, fm.fpioa.GPIO2)



Led_b = GPIO(GPIO.GPIO0, GPIO.OUT)         #设置输入输出模式

Led_r = GPIO(GPIO.GPIO0, GPIO.OUT)

Key  = GPIO(GPIO.GPIO2, GPIO.IN)



while True:

    if Key.value()==0:                      #读取或设置 GPIO 电平

        Led_r.value(1)

    else:

        Led_r.value(0)
  • 总结

以上就是按键控制LED的流程,涵盖了GPIO的输入输出的基本操作。任何控制器、单片机和CPU首先要掌握的就是输入输出的GPIO,学会了这个基本就能完成大部分的项目的基本功能了。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Instagram 账号被封怎么办?如何申诉拿回账号?

不知道各位在玩转海外社媒平台时有没有遇到过Instagram账号异常的情况,比如会出现账号受限、帖子发不出去、账号被封号等情况?Instagram账号如果被封不用马上弃用,我们可以先尝试一下申诉,看看能不能把账号解封。所以今天将会出一篇Instagra…

综合布线实训室建设方案2024

综合布线实训室概述 随着智慧城市的发展,人工智能、物联网、云计算、大数据等新鲜行业的兴起,网络布线系统是现代智慧城市、智慧社区、智能建筑、智能家居、智能工厂和现代服务业的基础设施和神经网络,实践表明网络系统的故障 70%发生在布线…

生成式 AI - Diffusion 模型的数学原理(4)

来自 论文《 Denoising Diffusion Probabilistic Model》(DDPM) 论文链接: https://arxiv.org/abs/2006.11239 Hung-yi Lee 课件整理 文章目录 一、 q ( x t ∣ x t − 1 ) q(x_{t} \mid x_{t-1} &#xff…

JVM常见问题笔记分享

文章目录 1 JVM组成1.1 JVM由那些部分组成,运行流程是什么?1.2 什么是程序计数器?1.3 你能给我详细的介绍Java堆吗?元空间(MetaSpace)介绍 1.4 什么是虚拟机栈1.5 堆和栈的区别1.6 能不能解释一下方法区?1.5.1 概述1.5.2 常量池1…

C++题目打卡2.18

从今天开始我们又将讲4天题目。 题目列表 1.分配T4 2.组合T5 #分配T4 这里很明显是&#xff08;200 110&#xff09; - 330的差值最小。 我们先想到了一个想法就是输入时哪个堆大,加那个。 #include <bits/stdc.h> using namespace std; int main(){int n, ans1 0, …

Win11家庭版,鸿蒙DevEco 模拟器启动失败,成功解决了

本人电脑系统&#xff1a;Windows 11 家庭版 正常安装模拟器后&#xff0c;启动失败&#xff0c;查了各种方法&#xff0c;最终发现是电脑虚拟机未启动导致的。 官方给出的解决方法&#xff08;对我无效&#xff01;&#xff01;&#xff01;&#xff09;&#xff1a; 我的…

MySQL之select查询

华子目录 SQL简介SQL语句分类SQL语句的书写规范SQL注释单行注释多行注释 select语句简单的select语句select的算数运算select 要查询的信息 from 表名;查询表字段查询常量查询表达式查询函数 查询定义别名as安全等于<>去重distinct连接字段concat 模糊查询运算符比较运算…

Linux网络----防火墙

一、安全技术和防火墙 1、安全技术 入侵检测系统&#xff08;Intrusion Detection Systems&#xff09;&#xff1a;特点是不阻断任何网络访问&#xff0c;量化、定位来自内外网络的威胁情况&#xff0c;主要以提供报警和事后监督为主&#xff0c;提供有针对性的指导措施和安…

代码随想录第33天|● 1005.K次取反后最大化的数组和 ● 134. 加油站 ● 135. 分发糖果

文章目录 1005.K次取反后最大化的数组和贪心思路&#xff1a;代码&#xff1a; 34. 加油站思路一&#xff1a;全局贪心代码&#xff1a; 思路二&#xff1a;代码&#xff1a; 135. 分发糖果思路&#xff1a;两边考虑代码&#xff1a; 1005.K次取反后最大化的数组和 贪心思路&am…

Stackoverflow(1)-根据RequestBody的内容来区分使用哪个资源

如果使用Spring&#xff0c;可以通过RequestBody将请求体的json转换为Java对象&#xff0c;但如果URI相同&#xff0c;而请求体的内容不同&#xff0c;应该怎么办&#xff1f;问题来源(stackoverflow)&#xff1a;Spring RequestBody without using a pojo?稍微研究了一下&…

手把手一起开发SV4E-I3C设备(三)

JEDEC DDR5 SPD Hub Devices例程 为进一步方便程序开发&#xff0c;使用vscode开发程序&#xff0c;IntrospectESP_23.3.0软件调用运行&#xff0c;如图所示&#xff0c;双击UTILITY区域的PythonModule&#xff0c;自动生成一个py文件&#xff0c;可以给该模块重命名。例如重命…

重学Java 16.面向对象.4.对象数组

一、对象数组 1.需求&#xff1a;定义一个长度为3的数组&#xff0c;存储3个person对象&#xff0c;遍历数组&#xff0c;将三个person对象中的属性值获取出来 public class Person {private String name;private int age;public Person(String name,int age) {this.name name…

Yii2项目使用composer异常记录

问题描述 在yii2项目中&#xff0c;使用require命令安装依赖时&#xff0c;出现如下错误提示 该提示意思是&#xff1a;composer运行时&#xff0c;执行了yiisoft/yii2-composer目录下的插件&#xff0c;但是该插件使用的API版本是1.0&#xff0c;但是当前的cmposer版本提供的…

单体工程结构

本文主要说明下单体项目的工程结构如何设计&#xff0c;目前业界存在两种主流的应用工程结构&#xff1a;一种是阿里推出的《Java开发手册》中推荐的&#xff0c;另外一种是基于DDD(领域驱动设计)推荐的。下面我们来看下两种工程结构是怎样的。 一、 基于阿里《Java开发手册》…

生成式 AI - Diffusion 模型的数学原理(3)

来自 论文《 Denoising Diffusion Probabilistic Model》&#xff08;DDPM&#xff09; 论文链接&#xff1a; https://arxiv.org/abs/2006.11239 Hung-yi Lee 课件整理 文章目录 一、图像生成模型本质上的共同目标二、最大似然估计三、和VAE的关联四、概率计算 一、图像生成模…

三维模型优化与可视化开发者服务

一站式服务开发者 1、极速流畅的浏览体验 无需安装插件&#xff0c;实现模型多端展示 最大支持100G模型&#xff0c;杜绝花、卡、闪 2、丰富易用的开发工具 无需掌握图形技术&#xff0c;实现模型轻量化和3D交互展示 提供丰富的SDK和API&#xff0c;简洁易用 老子云API 提供…

Java+SpringBoot:高校竞赛管理新篇章

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

添加环境变量

目录 一、前言二、目的三、添加环境变量的步骤四、检查环境变量是否配置成功 一、前言 在很多地方在下载完软件后都需要添加环境变量方可使用。这里以要在终端使用MySQL为例来说一下&#xff0c;在安装好MySQL8.0版本的前提下&#xff0c;如何添加环境变量。 二、目的 添加环…

力扣OJ题——旋转数组

题目&#xff1a;189.旋转数组 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数 思路一&#xff1a; 1.每次挪动旋转1位&#xff08;用tmp将最后一位存起来&#xff0c;其余所有数据向后移&#xff0c;然后将tmp放在第一个位…

单源最短路径(Dijkstra)

前言 dijkstra&#xff1a;对于无负边的情况下可以达到O(nlogn)且很难被卡 最短路 - OI Wiki (oi-wiki.org) P3371 【模板】单源最短路径&#xff08;弱化版&#xff09; P3371 【模板】单源最短路径&#xff08;弱化版&#xff09; - 洛谷 | 计算机科学教育新生态 (luogu.com…
最新文章