tiny6410按键驱动总结

2023-05-16

         写了7个版本的按键驱动:

      1.查询法:在应用程序的while循环里不停的调用read函数读取按键值,太耗费CPU资源了。

      2.中断发:同样是在一个while循环里不停的调用read函数读按键值,但是这个程序里用了个等待队列,没有按键按下时,调用read函数进程会休眠。当有按键按下时,在中断服务程序里会唤醒休眠的进程,从而读取到按键值。相对于查询法,耗费的CPU资源少了很多。

     4.poll机制:也是在一个while循环里,调用poll函数查询下设备文件是否可读,如果不可读,就休眠一会儿,然后再来查询,如果设备文件可读,就调用read函数。

     5.异步通知(信号机制):这个类似于QT里的信号与槽,当有按键按下时,产生中断,在中断服务函数里向应用程序发射信号,应用程序里收到这个信号后,执行相应的函数来处理。这种方式是最节省CPU资源的。

     6.定时器消抖:这个就是内核定时器的应用,没啥好说的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

tiny6410按键驱动总结 的相关文章

  • 巡线PID算法

    相信很多电子专业的同学都做过循迹小车这个小玩意儿 xff0c 而在我们刚刚接触巡线的时候都是用的两个循迹模块 xff08 如下图 xff09 左边的模块检测到黑线了就说明我车子的方向偏右了就需要往左转 xff0c 同理 xff0c 右边检测
  • MSP432(Keil5)——9.ADC驱动

    本次例程驱动了板载的ADC来读取一个模拟的角度传感器 xff0c 大家可以在ADC读取中断里面换成其他的计算 xff0c 具体引脚见程序代码 adc c span class token macro property span class
  • C语言宏函数妙用——1

    span class token macro property span class token directive hash span span class token directive keyword include span spa
  • union和struct的区别

    union只配置一个空间来放置共用体中内存最大的数据 xff0c 而结构体则给其中每个变量内存空间 union常用来压缩数据空间 xff0c 其中两个变量不能同时使用时用union
  • 二极管基础知识

  • Java学习之多线程复制文件

    1 一个线程复制一个文件 import java io FileInputStream import java io FileOutputStream import java io IOException public class MyTh
  • 对于HTTP请求头及响应头的详解

    对于HTTP协议的请求头的详解 标签 xff1a CSDN博文 http协议由两部分组成 xff1a 请求和响应 当你在浏览器中输入一个URL时 xff0c 浏览器将按照你的请求创建并且发送请求 xff0c 该请求包含的所输入的URL以及一
  • 手把手教你实现Unity网络同步

    现如今 xff0c 网络同步的技术在各种游戏里被广泛应用和发展 xff0c 那么 xff0c 如何在Unity中搭建网络模块 xff1f 如何使服务器和客户端之间通信 xff1f 如何做到网络同步 xff1f 本文作者烂笔头 27将从自身经
  • Java个人学习笔记07多线程和网络编程

    Java 多线程编程 Java 给多线程编程提供了内置的支持 一条线程指的是进程中一个单一顺序的控制流 xff0c 一个进程中可以并发多个线程 xff0c 每条线程并行执行不同的任务 创建线程 Java 提供了三种创建线程的方法 xff1a
  • 同步/异步与阻塞/非阻塞的区别(转)(中软国际Fourth day)

    转自于 http www cppblog com converse archive 2009 05 13 82879 html 首先来解释同步和异步的概念 这两个概念与消息的通知机制有关 举个例子 比如我去银行办理业务 可能选择排队等候 也
  • python subprocess模块设置环境变量,加载动态库

    众所周知 xff0c 利用python的subprocess pOpen 可以执行应用程序 不过今天碰到一个问题 xff1a 应用程序需要调用动态库 xff0c 而且动态库和应用程序在同一目录下 不过python的运行目录不是应用程序所在目
  • 智能家居 WiFi&BLE 双模模组 WiFi蓝牙遥控器同时控制W800

    由于文档较长文档只展示部分资料需要了解详细资料 链接 https pan baidu com s 1cpmtH7fC7D RGBh09UbhIQ 提取码 pnu4 一 W800 Wi Fi 蓝牙双模SoC 芯片简介 2 二 W800 CDS
  • Qt Creator使用CMake配置第三方库

    语法 include directories 添加第三方库头文件路径 这里的 include directories 直接向括号里加入第三方库的头文件路径即可 span class token function include direct
  • QtGlobal中常见的一些函数和宏

    lt QtGlobal gt 头文件包含了 Qt 类库的一些全局定义 xff0c 包括基本数据类型 函数和宏 xff0c 一般的 Qt 类的头文件都会包含该文件 xff0c 所以不用显式包含这个头文件也可以使用其中的定义 全局变量定义 为了
  • 传感器之激光雷达简介与使用

    激光雷达是现今机器人尤其是无人车领域及最重要 最关键也是最常见的传感器之一 xff0c 是机器人感知外界的一种重要手段 概念 激光雷达 LiDAR xff0c 英文全称为 Light Detection And Ranging xff0c
  • sci_loopback_int的例程(中断程序)

    例程代码如下 xff1a include 34 DSP28x Project h 34 Device Headerfile and Examples Include File define CPU FREQ 40E6 Default 61
  • python中使用subprocess.Popen中的返回值总结:

    usr bin python coding UTF 8 import sys import subprocess import traceback author by zhangheng timestamp 2018 06 08 gennl
  • SPI工作模式

    1 SPI总线条数 MISO xff1a 主设备输入 从设备输出引脚 该引脚在从模式下发送数据 xff0c 在主模式下接收数据 MOSI xff1a 主设备输出 从设备输入引脚 该引脚在主模式下发送数据 xff0c 在从模式下接收数据 SC

随机推荐

  • 游戏常用算法:四种迷宫生成算法

    简介 所谓迷宫生成算法 xff0c 就是用以生成随机的迷宫的算法 迷宫生成算法是处于这样一个场景 xff1a 一个row行 xff0c col列的网格地图 xff0c 一开始默认所有网格四周的墙是封闭的 要求在网格地图边缘 xff0c 也就
  • OPEN alliance工作小组

    Open Alliance TC 8小组 TC 8 xff1a 汽车以太网ECU测试规范 TC 8分配了汽车以太网ECU测试规范 它根据这些共享要求定义了适用于汽车以太网网络中所有ECU的规范 TC8定义了测试流程和支持建立能够执行ECU测
  • 测试PCB线路的阻抗的方法

    1 TDR测试 TDR是利用短脉冲信号发送到测试信号线上 xff0c 当信号到达另一端或者遇到不匹配点的时候就会发生反射回来 通过测量反射信号的时间和特征来判断线路的阻抗和不匹配点的位置 TDR测试需要专业的测试设备 xff0c 如时域反射
  • 开关电源的特性阻抗

    一 开关电源的特性阻抗好坏可以用以下几个量化指标来评估 xff1a 1 交流阻抗 xff08 AC Impedance xff09 xff1a 交流阻抗是指开关电源在交流信号下的电阻 电感和电容等电学特性 交流阻抗的好坏直接影响开关电源的驱
  • 学网络比不可少的网络协议分析神器-wireshark

    Wireshark是一款网络协议分析器 xff0c 可以用于捕获和分析网络数据包 xff0c 以便深入了解网络通信的细节和性能 xff0c 同时也可以用于网络安全分析和故障排除 Wireshark的主要功能包括 xff1a 1 捕获网络数据
  • C语言return的用法详解,C语言函数返回值详解

    C语言return的用法详解 xff0c C语言函数返回值详解 函数的返回值是指函数被调用之后 xff0c 执行函数体中的代码所得到的结果 xff0c 这个结果通过 return 语句返回 return 语句的一般形式为 xff1a spa
  • 网络编程——多线程编程

    文章目录 目的内容源代码及结果 1 Linux下的线程同步 1 1 编程使用互斥量实现线程同步 xff1b 1 2 编程使用信号量实现线程同步 xff0c 要求实现以下功能 xff1a 线程A从用户输入得到值后存入全局变量num xff0c
  • ARM-MPU内存保护单元详解

    ARM MPU 详解 简介 MPU Memory Protection Unit 内存保护单元 本文主要讲 armv7 m 架构 架构下的 MPU 在 armv7 m 架构下 xff0c Cortex M3 和 Cortex M4 处理器对
  • 玩转doxygen 之RT-THREAD

    玩转doxygen 之RT THREAD 文章目标 经常会看到小伙伴们遇到怎么写函数注释头疼 xff0c 以及如何生成漂亮的代码注释文档头疼 据我了解 xff0c 目前C语言中的代码注释规则有且只有一种比较常用 xff0c 就是doxyge
  • STM32如何将文件放到内部flash里面

    STM32如何将文件放到内部flash里面 背景介绍 上一篇讲到如何将STM32的FLASH改成文件系统 xff1a 如何不用外设在STM32片上FLASH做一个文件系统 https club rt thread org ask artic
  • 营运型手游开发、测试、正式的三阶段开发架构

    在手机游戏的畅销排行榜上 xff0c 可以看到大多数的游戏都是营运型的游戏 所谓的营运型游戏 xff0c 指的是游戏的开发并不是上架后就结束 xff0c 而是需要持续的配合游戏营运的需求 xff0c 进行游戏的更新 内容调整以及后续内容的开
  • 【github】【action】如何给软件包添加CI集成

    github action 如何给软件包添加CI集成 简介 github有自己的CI集成工具 action 很少有小伙伴关注到 xff0c 如果你有自己的软件包 xff0c 想要对其进行维护的话 xff0c 添加CI集成能够方便你快速验证你
  • Access 标准表达式中数据类型不匹配

    Access 标准表达式中数据类型不匹配 Access标准表达式中数据类型不匹配 今天在做一个小程序时 要求用到Access数据库 在调试运行一个SELECT语句时 老是提示标准表达式中数据类型不匹配 弄了好久 原来发现是数据类型不匹配的问
  • c#中new一个对象以后,是否需要手动释放?

    c 中new一个对象以后 xff0c 是否需要手动释放 xff1f 2012 04 28 23 43 wshbfzdzb 分类 xff1a C NET 浏览723次 c 43 43 中 class1 a 61 new class1 需要在用
  • ARM M0+各种定时器驱动的编写

    systick 系统滴答时间 这个定时器之前的文章已经讲过 这个是一个递减的定时器 xff0c 有个模数寄存器 在此不多说 就是一个系统的模块 xff0c 这个模块是集成在ARM M0 43 内核中的 xff0c 其实主要是集成在NVIC
  • MG323所有命令使用

    AT 43 CGMR 61 OK AT 43 GMR 61 OK AT 43 GMR 12 210 10 05 00 OK AT 43 CGSN 351869042318140 OK AT 43 CIMI 460021734971641 O
  • BAT文件的常用语法

    bat文件中常用的命令有 xff1a echo 64 rem pause goto call if copy等 下面简要给出这几个命令的用法 1 echo命令 echo 表示显示此命令后的字符 例如echoHello World choHe
  • c++ http请求,json解析

    一 文章内容 解决c 43 43 http请求以及对返回结果json串进行解析 xff0c 使用jsoncpp库 二 安装jsoncpp插件 vs2015通过NuGet直接安装jsoncpp到项目下 安装好之后 xff0c 会在项目下有个p
  • Linux安装Oracle12c操作手册

    1 基本环境 服务器 xff1a 64位 16核CPU 384G内存 16T硬盘 操作系统 xff1a CentOS 7 4 Oracle版本 xff1a 12c 版本号12 1 0 2 0 2 安装必要的软件包 查看rpm包是否安装 xf
  • tiny6410按键驱动总结

    写了7个版本的按键驱动 xff1a 1 查询法 xff1a 在应用程序的while循环里不停的调用read函数读取按键值 xff0c 太耗费CPU资源了 2 中断发 xff1a 同样是在一个while循环里不停的调用read函数读按键值 x