当前位置: 首页 > news >正文

定时器实现非阻塞式程序

程序功能:两个按键分别控制两个LED,使其切换不同的点亮模式
程序要求:按键灵敏,每次按键按下都能准确切换模式

                      模块要高度封装,主程序调用要简洁, 在任何时候模块代码都不能阻塞主程序

阻塞和非阻塞

阻塞:执行某段程序时,CPU因为需要等待延时或者等待某个信号而被迫处于暂停状态一段时间,程序执行时间较长或者时间不定
非阻塞:执行某段程序时,CPU不会等待,程序很快执行结束

定时器扫描按键-单按键

定时中断,每隔20ms读取一次本次引脚值和上次引脚值
判断,如果本次是1,上次是0,则表示按键按下且当前处于刚松手的状态
置键码标志位,向主程序报告此事件

定时器扫描按键-多按键

先写一个获取键码值的子函数(非阻塞式)
定时中断,每隔20ms读取一次本次键码值和上次键码值
判断,如果本次是0,上次非0,则表示按键按下且当前处于刚松手的状态
置键码标志位,向主程序报告此事件

定时器实现LED闪烁

定时中断,每隔1ms计次变量自增
计次变量计到周期值时,归零
判断,如果计次变量小于一个比较值,开灯,否则,关灯

http://www.dtcms.com/a/456710.html

相关文章:

  • ArrayList - 数据结构 - 数组
  • 做网站的注意什么问题哪些经营范围是包含网站开发的
  • 【Python】基于 PyQt6 和 Conda 的 PyInstaller 打包工具
  • MyBatis Plus 核心功能与用法
  • LNMP架构实践
  • 自己怎么建个网站赚钱吗外贸品牌推广公司
  • 在线咨询 1 网站宣传建立免费公司网站
  • 10-存储过程和存储函数
  • leetCode101:对称二叉树
  • 【Linux】网络部分——Socket编程 UDP实现网络云服务器与本地虚拟机的基本通信
  • 实战项目:鸿蒙多端协同智能家居控制 App 开发全流程
  • 个人用云计算学习笔记 --19 (MariaDB服务器)
  • Linux -- 信号【中】
  • Azure - 尝试创建并使用一下Azure AI Search
  • NtripShare GNSS接收机配置系统SPI读取村田SCL3300倾角数据
  • Python私教FastAPI+React构建Web应用02 什么是全栈Web应用
  • 开源安全管理平台wazuh-文件完整性监控FIM
  • 网站建设选超速云建站黄页88成立时间
  • 南通做网站ntwsd开发公司总工年终总结
  • VS Code文件监视排除设置详解
  • 3D坐标旋转公式
  • 《Git 从入门到进阶》教学大纲
  • linux网络服务+linux数据库5
  • 德山经济开发区建设局网站wordpress的数据库在哪里
  • P3808 AC 自动机(简单版)
  • C++----bitmap位图的使用
  • 单链表的应用02---算法中的暴力美学(第八讲)
  • 【RAG】优化query查询效果的几种处理
  • transformer详解(位置编码+attention+残差连接+全连接网络)
  • 已注册域名怎么做网站呢免费网站免费网站平台