扫码阅读
手机扫码阅读

面向对象与状态机结合的按键驱动模块

57 2024-08-31

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:面向对象与状态机结合的按键驱动模块
文章来源:
一起学嵌入式
扫码关注公众号

摘要

本文介绍了一个开源的C语言按键驱动项目XxxSwitchScan_Driver,它是一个使用简单、灵活且解耦的驱动,适用于裸机与操作系统。该驱动使用面向对象思想和状态机编写,将按键及类似的传感器设备抽象为开关量输入设备,实现了多种响应事件。

特性

  • 基于链表,动态管理设备
  • 完成硬件隔离,适应不同输入条件
  • 使用回调机制,业务逻辑分离
  • 隔离内存管理,由调用者主导
  • 支持裸机与操作系统下的tick
  • 功能丰富,支持多种事件响应
  • 支持设备的按下消抖与抬起消抖配置
  • 支持特殊应用场景如设备间互斥或联系

改进点

由于功能支持多,代码量较大,计划推出精简版。

实际应用场景

已应用于多种场景,如独立按键、矩阵键盘、传感器、异步/事件驱动等。

资源获取

资源可从gitee仓库或公众号后台获取。

格式与文件介绍

项目使用UTF-8编码和doxygen注释格式。包含示例、许可证、说明文档及核心驱动代码文件。

注意事项

考虑连击事件、边沿模式限制、操作系统中的阻塞问题、tick的大小和消抖时长。

使用流程

包括硬件初始化、定义设备对象指针、提供状态读取与事件处理函数、内存分配、设备注册和调用扫描函数。支持多种使用方式,适用于RTOS和裸机环境。

代码说明

提供了详细的头文件和源文件说明,包括数据结构和裁剪配置项。

更新计划

计划上传更多组件和不同场景的例程。

想要了解更多内容?

查看原文:面向对象与状态机结合的按键驱动模块
文章来源:
一起学嵌入式
扫码关注公众号