| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 单片机学习笔记-单片机按键单击/双击/长按的实现 -> 正文阅读 |
|
[嵌入式]单片机学习笔记-单片机按键单击/双击/长按的实现 |
一、KEY_Scan1函数,此处结构直接使用了正点原子资料里面的按键识别函数,稍有改动. 1.添加了定时器清零及定时器内部计数的清零(TH1_Reload与TL1_Reload,Flag3). 2.添加了按键计数标志KEY_Times. 3.return返回方式改为直接赋值给全局变量KEY_Select.
?二、KEY_Scan函数(注意没有1),此处先执行KEY_Scan1函数,再判断按键状态,最后根据按键时间逻辑来判断按键模式. 1.KEY_State为按键状态,1为按键案件没有松开,0为按键已经松开(与KEY_Scan1中的key_up作用不同,key_up是为了判断是否有按键按下,选用模式0后按下置1后即清0) 2.Key_Times是为了判断按键次数. 3.Flag3每次按键都清零,其数值为最新按键次数计时时间.
三、Flag3在定时器内设置 ,每次计数进入中断内部Flag3加1,此处定时周期为5ms. 以上述程序设置为例: 如果第一次按下时间超过250ms(50*5ms)没有第二次按键(KEY_Times==1)按下且按键松开(KEY_State==0)则为短按 如果第一次按下时间超过800ms(160*5ms) 且按键没有松开(KEY_State==1)则为长按 如果第一次按下之后再250ms内按下第二次 且第二次按下以后时间250ms(50*5ms)内没有检测到第三次按键 则为双击 如果能进入三次按键没有清零则为三击 (时间可调) 四、头文件.h 注意STATE_CLEAN的使用位置和内部需要清除的相关标志位 1.KEY_Times清零. 2.定时器清零. 3.计数Flag3清零.
五、 main函数使用
|
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 20:17:34- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |