【Micropython Pitaya Lite教程】key按键与EXTI中断

文章目录

  • 前言
  • 一、按键的使用
    • 1.1 按键的简介
    • 1.2 读取按键的高低电平
  • 二、EXIT外部中断
    • 2.1 EXIT外部中断简介
    • 2.2 外部中断基础知识
    • 2.3 设置外部中断
    • 2.4 示例代码
  • 总结


前言

Micropython Pitaya Lite开发板提供了丰富的功能和灵活的扩展性,其中包括了按键(key)输入和外部中断(EXTI)功能。通过这些功能,您可以轻松地与外部设备进行交互,并实现更加复杂的应用。本教程将重点介绍如何在Micropython Pitaya Lite上使用按键和外部中断,以便您更好地利用这些功能进行项目开发。


一、按键的使用

1.1 按键的简介

几乎每个开发板都会板载有独立按键,因为按键用处很多。常态下,独立按键是断开的,按下的时候才闭合。每个独立按键会单独占用一个 IO 口,通过 IO 口的高低电平判断按键的状态。但是按键在闭合和断开的时候,都存在抖动现象,即按键在闭合时不会马上就稳定的连接,断开时也不会马上断开。这是机械触点,无法避免。独立按键抖动波形图如下:
在这里插入图片描述
图中的按下抖动和释放抖动的时间一般为 5~10ms,如果在抖动阶段采样,其不稳定状态可能出现一次按键动作被认为是多次按下的情况。为了避免抖动可能带来的误操作,我们要做的措施就是给按键消抖(即采样稳定闭合阶段)。消抖方法分为硬件消抖和软件消抖,我们常用软件的方法消抖。
软件消抖:方法很多,我们例程中使用最简单的延时消抖。检测到按键按下后,一般进行10ms 延时,用于跳过抖动的时间段,如果消抖效果不好可以调整这个 10ms 延时,因为不同类型的按键抖动时间可能有偏差。待延时过后再检测按键状态,如果没有按下,那我们就判断这是抖动或者干扰造成的;如果还是按下,那么我们就认为这是按键真的按下了。对按键释放的判断同理。
硬件消抖:利用 RC 电路的电容充放电特性来对抖动产生的电压毛刺进行平滑出来,从而
实现消抖,但是成本会更高一点,本着能省则省的原则,我们推荐使用软件消抖即可。

1.2 读取按键的高低电平

在下面这个文章中,我们讲了一个函数value,当不填参数时,他返回该引脚的电平状态,我们可以使用他来读取按键的电平状态
点亮第一个LED灯

如果我们要读取引脚的状态,我们初始化引脚的时候应该设置mode为Pin.IN输入模式

from machine import Pin
import time# 初始化 LED 并输出高电平
led = Pin('PA0',Pin.OUT,value = 1) # 配置 led 引脚模式
key = Pin('PA1',Pin.IN,Pin.PULL_UP) # 配置 key 引脚模式及上拉led_state = 0while True:if key.value() == 0: # 判断 KEY 是否按下time.sleep_ms(10)if key.value() == 0:led_state = not led_stateled.value(led_state)

二、EXIT外部中断

2.1 EXIT外部中断简介

外部中断(External Interrupt)是指来自于处理器外部的信号或事件,可以中断处理器当前的执行流程,跳转到相应的中断服务程序中执行。在嵌入式系统中,外部中断通常用于处理与外部设备或外部事件相关的响应操作,比如传感器的触发、按键的按下等。

当外部中断信号触发时,处理器会立即停止当前的任务,保存当前的执行环境(比如程序计数器、寄存器状态等),然后跳转到预先定义好的中断服务程序中执行相应的处理逻辑。一旦中断服务程序执行完成,处理器会恢复之前的执行状态,继续执行被中断的任务。

EXIT可能是指中断退出的意思,即当中断服务程序执行完成后,处理器退出中断状态,恢复到之前的执行流程中。

2.2 外部中断基础知识

在数字电路和信号处理中,上升沿和下降沿触发是指在信号的电压或电平变化时发生的事件。这些术语通常与时钟信号和触发器(比如触发器、寄存器等)的工作方式相关联。

上升沿触发:当信号的电压或电平从低电平(低电压)变为高电平(高电压)时,触发器或电路开始执行操作。简单来说,上升沿触发意味着在信号的上升沿(从低到高的过渡时刻)上触发动作。

下降沿触发:与上升沿相反,当信号的电压或电平从高电平(高电压)变为低电平(低电压)时,触发器或电路开始执行操作。换句话说,下降沿触发意味着在信号的下降沿(从高到低的过渡时刻)上触发动作。

这些概念在数字电路中非常重要,特别是在时序电路设计中。例如,在时钟边沿触发的触发器中,上升沿触发和下降沿触发可以决定何时执行数据的采样和传输

2.3 设置外部中断

在Pin类中,有一个函数irq(Pin.irq(handler=None,trigger=(Pin.IRQ_FALLING | Pin.IRQ_RISING)))
在这里插入图片描述

2.4 示例代码

from machine import Pin, IRQ
import time# 定义中断处理函数
def button_interrupt_handler(pin):print("Button pressed!")# 配置按键连接的GPIO引脚
button_pin = Pin('PA0', Pin.IN, Pin.PULL_UP)# 配置中断触发条件为下降沿(按键按下时为低电平)
button_pin.irq(trigger=Pin.IRQ_FALLING, handler=button_interrupt_handler)# 主循环
while True:# 主循环中可以执行其他任务print("Main loop running...")time.sleep(1)

总结

本教程详细介绍了如何在Micropython Pitaya Lite开发板上使用按键(key)和外部中断(EXTI)。我们首先了解了按键的基本原理和使用方法,然后通过Micropython代码实现了按键的检测和响应。接着,我们介绍了外部中断的概念及其在硬件上的应用,以及如何在Micropython中配置和使用外部中断。通过学习本教程,您可以更好地掌握Micropython Pitaya Lite开发板的按键和外部中断功能,为您的项目开发提供更多可能性。

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

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

相关文章

Python 全栈系列241 GFGo Lite迭代

说明 随着整个算网开发逐渐深入,各个组件、微服务的数量、深度在不断增加。由于算网是个人项目,我一直按照MVP(Minimum Viable Product )的原则在推进。由于最初的时候对架构、算法和业务的理解并没有那么深刻,所以MVP的内容还是在不断变化&…

IoTDB 入门教程 基础篇①——时序数据库为什么选IoTDB ?

文章目录 一、前文二、性能排行第一三、完全开源四、数据文件TsFile五、乱序数据高写入六、其他七、参考 一、前文 IoTDB入门教程——导读 关注博主的同学都知道,博主在物联网领域深耕多年。 时序数据库,博主已经用过很多,从最早的InfluxDB&a…

Linux基础之yum和vim

目录 一、软件包管理器yum 1.1 软件包的概念 1.2 软件包的查看 1.3 软件包的安装和删除 二、Linux编辑器之vim 2.1 vim的基本概念 2.2 正常模式(命令模式) 2.3 底行模式 2.4 输入模式 2.5 替换模式 2.6 视图模式 2.7 总结 一、软件包管理器yu…

MATLAB可视化图形绘制详解

图形常见的修饰命令 ①曲线修饰 曲线修饰包括曲线的顔色、线型和标示符号的设置。曲线修饰的命令格式如下。 plot(x,y,option):option定义了曲线的颜色、线型和标示符号。 MATLAB曲线修饰的各种选项见表 举例: x-2*pi:pi/50:2*pi; y1x.^2;y2cos(2*X);y3y1.*y2…

【Python项目】基于DJANGO的【基于语音识别的智能垃圾分类系统】

技术简介:使用Python技术、DJANGO框架、MYSQL数据库等实现。 系统简介:用户们可以在系统上面录入自己的个人信息,录入后还可以对信息进行修改,网站可以对用户上传的音频文件进行识别,然后进行垃圾分类。 背景&#xf…

【竞技宝jjb.lol】LOL:TES顺利晋级却暴露问题

北京时间2024年5月5日,英雄联盟2024MSI季中赛正在如火如荼的进行之中,目前入围赛阶段的比赛已经进入尾声,入围赛实力最强的两支战队T1、TES都已经顺利晋级淘汰赛阶段,在昨天的比赛结束之后,A组的FLY、PSG,B组的FNC、GAM将争夺剩下的两个出线名额。 回顾这次入围赛中,T1和TES的比…

课题学习(二十三)---三轴MEMS加速度计芯片ADXL372

声明:本人水平有限,博客可能存在部分错误的地方,请广大读者谅解并向本人反馈错误。 一、基础配置 测量范围-200g-200g,分辨率为12位, V s 、 V D D I / O V_s、V_{DDI/O} Vs​、VDDI/O​范围为1.6V-3.5V 1.1 引脚配…

u盘格式化后电脑读不出来怎么办?u盘格式化的东西还能恢复吗

随着科技的快速发展,U盘已成为我们日常生活和工作中不可或缺的数据存储工具。然而,有时我们可能会遇到U盘格式化后电脑无法读取的情况,或是误格式化导致重要数据丢失。面对这些问题,我们该如何应对?本文将为您详细解答…

基于 Dockerfile 部署nginx服务(实现HTTPS功能)

目录 前言 1、任务要求 2、建立工作目录并上传nginx安装包 3、创建自签名证书 4、创建 nginx Dockerfile 文件 5、准备并编写 nginx.conf 配置文件 6、准备nginx页面文件 7、工作目录文件结构 8、生成镜像 8、启动容器并开启宿主机端口映射 9、浏览器测试 前言 Ngi…

电子电器架构刷写 --- Bootloader大揭秘

电子电器架构刷写 — Bootloader大揭秘 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自…

c语言刷题——输出图案

1.输出用“*”组成的X形图案 题目:请打印用“*”组成的X形图案 描述: 多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。 输出描述: 针对每行输…

大语言模型中的第一性原理:Scaling laws

大语言模型的尺度定律在大语言模型的训练过程中起到了非常重要的作用。即使读者不参与大语言模型的训练过程,但了解大语言模型的尺度定律仍然是很重要的,因为它能帮助我们更好的理解未来大语言模型的发展路径。 1. 什么是尺度定律 尺度定律&#xff08…

Docker入门篇来啦~

文章目录 1虚拟化技术1.1 硬件级虚拟化1.2 操作系统级虚拟化 2 Docker是什么2.1 Docker介绍2.2 容器和虚拟机的区别2.3 为什么使用Docker 3 Docker运行环境部署3.1 Docker安装3.2 Docker服务启动 4 Docker核心组件4.1 镜像4.1.1 镜像的基本概念4.1.2 镜像的组成结构4.1.3 镜像的…

Java 三大特性之继承

目录 一、为什么需要继承? 二、继承概念 三、继承的语法 四、子类访问父类成员 五、super关键字 六、继承关系下的构造方法 七、继承关系下的初始化 八、protected关键字 九、继承的三种方式 十、final关键字 十一、继承和组合 一、为什么需要继承&#…

C语言——rand函数

一、rand函数 这是一个在 C 标准库 <stdlib.h> 中定义的函数&#xff0c;用于生成伪随机数&#xff0c;默认情况下&#xff0c;它生成从 0 到 RAND_MAX 的伪随机数&#xff0c;其中 RAND_MAX 是一个常数&#xff0c;通常是 32767。 1、函数原型&#xff1a; 2、函数返回…

k8s Dashboard 运维维护记录

k8s Dashboard 运维维护记录 k8s Dashboard 运维维护记录 Q1&#xff1a;需要使用firefox浏览器访问 提示了证书错误NET::ERR_CERT_INVALID&#xff0c;原因是由于物理机的浏览器证书不可用 需要注意的是&#xff0c;若提示“连接不安全”的警告时&#xff0c;点击“高级”…

SAP保税区业务方案

1. 保税区背景&#xff1a; 是经国务院批准设立的、海关实施特殊监管的经济区域&#xff0c;是我国目前开放度和自由度最大的经济区域。其功能定位为“保税仓储、出口加工、转口贸易”三大功能。根据现行有关政策&#xff0c;海关对保税区实行封闭管理&#xff0c;境外货物进入…

05 - 步骤 JSON output

简介 JSON Output 步骤用于将 Kettle 中的行流数据写出到 JSON 格式的文件或流中。它允许用户将 Kettle 中处理过的数据以 JSON 格式进行输出&#xff0c;适用于各种数据处理和交换场景。 什么是行流数据&#xff1f; preview data 中的每一个字段都是一个行流数据 使用 场…

www.fastssh.com SSH over WebSockets with CDNs

https://www.fastssh.com/page/create-ssh-cdn-websocket/server/这其实不是标准的websocket报文(服务器响应报文无Sec-Websocket-Accept字段)&#xff0c;所以无法使用github.com/gorilla/websocket包&#xff1a;GET / HTTP/1.1 Host: hostname:8080 User-Agent: Go-http-cli…

ubuntu20配置深度学习环境

目录 系统环境安装anaconda文件的安装anaconda环境配置anaconda换中科大源常用的anaconda命令 安装显卡驱动安装CUDA下载cudnn安装pytorch更换conda源选择对应的pytorch版本进行安装 系统环境 ubuntu20&#xff0c;安装了ros noetic。 参考博客主要有&#xff1a; https://g…