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

实际运行如下:

完整的源码:

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

相关推荐
luj_17683 小时前
残熵算法实时化三大瓶颈突破
c语言·开发语言·网络·经验分享·算法
不听话坏4 小时前
Ignition篇(下 一) 动态执行前的事情
开发语言·前端·javascript
likeyi074 小时前
require 和 import的区别
开发语言·前端
hongmai6668884 小时前
FH8856V310芯片详解:6M高清+0.5TOPS算力,赋能智能安防新方案
人工智能·单片机·嵌入式硬件·物联网·智能家居
远离UE45 小时前
UE5 compute shader 原子加
开发语言·c++·ue5
C+-C资深大佬5 小时前
C++ 显式类型转换详解:static_cast、dynamic_cast、const_cast、reinterpret_cast
开发语言·c++
KaMeidebaby5 小时前
卡梅德生物技术快报|抗体亲和力成熟工业化调控新机制:差异性浆细胞增殖工艺优化思路
java·开发语言·人工智能·算法·机器学习·架构·spark
luj_17686 小时前
心形曲线轨迹控制三大关键技术
c语言·开发语言·c++·经验分享·算法
Mininglamp_27187 小时前
Claude Code 封禁中国开发者之后:本地 AI 编程工具的替代方案实测
开发语言·人工智能·windows·开源软件·ai-native
思麟呀7 小时前
C++17(三)if constexpr+折叠表达式
开发语言·c++