基于Linux/ARM/单片机利用状态机对多个按键进行扫描实现短按或者长按

1)Linux/ARM/单片机入门级按键扫描程序设计,分享给将要学习或者正在学习Linux/ARM/单片机开发的同学。

2)内容属于原创,若转载,请说明出处。

3)提供相关问题有偿答疑和支持。

学习Linux/ARM/单片机的同学都会学习到一个知识点,就是按键扫描,本课题基于SigmaStar的平台SSC375芯片SOC详细说明如何写一个按键扫描程序,同时也适用于其他厂家SOC,或者是单片机MCU。本课题主要通过3个部分来介绍一个完整软硬件的设计流程。主要在Linux环境下实现。

代码架构:3层(用户层,业务层API,硬件接口层),其中硬件接口层与具体的硬件相关,用户适当的修改即可用到其他硬件平台,方便移植。

如下是SSC375的SOC按键接口原理图:用到了PAD_FUART_CTS,PAD_FUART_TX两个IO口,本程序支持扩展更多IO口的按键,本例仅使用到2个IO口控制两个按键

业务层API使用到了典型的状态机来实现按键扫描,支持长按/短按操作:嵌入式软件工程师必须掌握状态机

实际运行如下:

完整的源码:

已经整理好,可以在主页链接下载得到完整的源码。

相关推荐
白杨尚青37 分钟前
C++进阶篇(五):红黑树——四条规则、三种插入情况与旋转变色
开发语言·数据结构·c++·stl·红黑树·平衡二叉树
.道阻且长.44 分钟前
Linux基本开发工具:gdb和cgdb的使用
linux·运维·服务器·开发语言
starzy19901 小时前
深入理解Scala匿名函数:函数式编程基石
开发语言·scala
apcipot_rain2 小时前
C++转Java日记(05)
java·开发语言·c++
apcipot_rain11 小时前
C++转Java日记(04)
java·开发语言·c++
wuyk55511 小时前
Keil工具链-第05讲-启动文件与__main到底做了什么
c语言·stm32·单片机·嵌入式硬件·物联网
云和数据.ChenGuang12 小时前
LangGraph 异步 Node 的设计与写法实践
开发语言·人工智能·python·机器学习·php
蜗牛一步步往上爬16 小时前
第十六章 C++语言在深度学习中的应用
开发语言·c++·深度学习
shijuejianceliu17 小时前
传统规则视觉与嵌入式AI智能相机的技术差异
人工智能·嵌入式硬件·视觉检测·相机
张张123y18 小时前
DSH 插件调试避坑:client.js 设置面板、热重载与高频报错排查表
开发语言·javascript·人工智能·开源·ecmascript·后端开发·ai agent