基于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使用到了典型的状态机来实现按键扫描,支持长按/短按操作:嵌入式软件工程师必须掌握状态机

实际运行如下:

完整的源码:

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

相关推荐
梦境虽美,却不长4 分钟前
C语言 学习 宏命令(预处理) 2025年6月9日14:41:39
c语言·开发语言·学习
橘子夏与单车少年k21 分钟前
疏锦行Python打卡 DAY 27 函数专题2:装饰器
开发语言·python
Mikhail_G23 分钟前
数据分析入门初解
大数据·运维·开发语言·python·数据分析
时时三省23 分钟前
【时时三省】(C语言基础)将外部变量的作用域扩展到其他文件
c语言
Chef_Chen32 分钟前
从0开始学习R语言--Day19--连续变量的相关性检验
开发语言·学习·r语言
Morpheon32 分钟前
使用R进行数字信号处理:婴儿哭声分析深度解析
开发语言·r语言·信号处理
黎䪽圓34 分钟前
【Java多线程从青铜到王者】阻塞队列(十)
java·开发语言
jz_ddk1 小时前
[python] 使用python设计滤波器
开发语言·python·学习·算法
Thomas_YXQ1 小时前
Unity3D SM节点式动画技能编辑器实现
开发语言·游戏·unity·编辑器·游戏引擎