RTOS 驱动开发篇-通过 RTOS 组件实现按键驱动-优化2

2023-05-16

RTOS 驱动开发篇-通过 RTOS 组件实现按键驱动-优化2

概述

一个好的驱动程序需要数据关系清晰、代码可复用性高,并且便于维护。

如在 RTOS 驱动开发篇-通过 RTOS 组件实现按键驱动1 中所述的那样,基础版本的按键驱动代码只是为了让大家熟悉按键驱动的基本原理。它存在下述问题:

  1. 代码复用性差。新建一个按键,需要改动较多代码。
  2. 数据信息不是很清晰,管脚与其对应的 ID 关系没有绑定,导致信息对应关系不明确,影响维护。
  3. 按键创建后是常驻的,示例中的 GPIO19、GPIO21按键被创建后,就一直存在于系统中,无法在程序中取消对应按键。

在上一节 中介绍了一些优化措施,虽然这些优化措施改善了代码的复用性、数据信息也变得更加清晰了。但是前述的优化措施,没有优化上述问题的第三点,即创建的按键是常驻的,程序运行中不能取消对应的按键,这限制了该按键驱动在需要动态创建\取消按键的场景中的使用。

本小节紧接上节,继续优化按键驱动,实现一个相对完善的真实的产品中可能使用的按键驱动程序。

需求及功能解析

对按键驱动的更改主要包括:

1)对按键进行优先级划分,高优先级的按键可以尽快被响应:

typedef enum<
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RTOS 驱动开发篇-通过 RTOS 组件实现按键驱动-优化2 的相关文章

随机推荐

  • sql查询语句汇总,先撸为敬

    一 简单查询语句 group by 和having的区别 链接 二 复杂查询 1 数据分组 max min avg sum count SQL gt SELECT MAX sal MIN age AVG sal SUM sal from e
  • 最优化的基本概念

    最优化的基本概念 连续和离散优化问题无约束和约束优化问题随机和确定性优化问题线性和非线性规划问题凸和非凸优化问题全局和局部最优解优化算法 一般来说 xff0c 最优化算法研究可以分为 xff1a 构造最优化模型 确定最优化问题的类型和设计算
  • [RISCV]为RISC-V移植FreeRTOS系列之一 -- 目录结构

    前言 写这篇文章的时候 xff0c 我基本已经完成了这项工作了 xff0c 花了一周的时间来把freertos porting到Andes公司的N25 riscv core上 xff0c 本来其实是想支持国产的RT Thread xff0c
  • [RISCV]为RISC-V移植FreeRTOS系列之三 -- 时基

    前言 书接上回 xff0c 上回说到我们已经做好了准备 xff0c 所谓万事具备 xff0c 就差一场东风 xff0c 而能吹动FreeRTOS这条大船的是什么呢 xff1f 没错 xff0c 聪明的你已经猜到了 xff0c 是时基 有过其
  • [RISCV]为RISC-V移植FreeRTOS系列之四 -- 中断与trap handler

    前言 上回说到了我们已经把系统的心跳动起来了 xff0c 但是这里面还有一个问题 xff0c 我们都知道timer中断 xff0c 中断的trap怎么来的呢 这回就来解决这个事情 作者 xff1a wangyijieonline 链接 xf
  • [RTOS]uCOS、FreeRTOS、RTThread、RTX等RTOS的对比之特点

    最近正好又重新回顾了一下这几款OS xff0c 心里一直有个疑问 xff0c 明明这几款RTOS是这么像 xff0c 为什么还要搞出这么多个来呢 xff0c 最后的结论就是 xff0c 管他呢 xff0c 反正哪个用的顺手用哪个 本篇博客就
  • git submodule

    此文已由作者张磊薪授权网易云社区发布 欢迎访问网易云社区 xff0c 了解更多网易技术产品运营经验 前言 submodule 目前对 git 仓库拆分的已有实现之一 环境 git version 2 7 4 windows 1 准备工作 首
  • FreeRTOS 通信方式

    文章目录 一 消息队列二 信号量三 互斥量四 事件五 通知 一 消息队列 消息队列是一种常用于任务间通信的数据结构 xff0c 队列可以在任务与任务间 中断和任务间传递信息 读写队列均支持超时机制 1 创建队列 QueueHandle t
  • 芯片、模组、开发板的区别与联系-结合ESP32浅谈

    1 从外形说起 xff1a 1 1芯片 没错 xff0c 这块黑色的小硅片就是 芯片 本体 xff08 通常比大拇指还小 xff0c 内部集成了实现特定功能的硬件集成电路 xff09 1 2模组 由上述芯片研发的模组是这样的 xff1a 从
  • 一文读懂局域网、广域网、WLAN、WiFi的联系与区别

    1 引言 最近总有小伙伴问我 xff0c 广域网 局域网的区别与联系 WLAN与WiFi的关系 xff0c 遂写此文 xff0c 以作解答 2 广域网与局域网 广域网 xff08 Wide Area Network xff09 xff0c
  • RTOS 和裸机系统的异同-基于 ESP32 学习双核 FreeRTOS 的使用

    Learning FreeRTOS with esp32 什么是 RTOS 其本质上是运行在小型嵌入式设备上的特殊软件 系统软件 如同手机的安卓系统软件 windows 系统软件 RTOS VS 裸机系统 传统的裸机系统 xff08 无操作
  • u盘打开之后就只有一个快捷方式

    我今天也出现了这种问题 xff0c 百度一下发 现都解决不了 xff0c 然后自己尝试了一个新的方法 xff1a 其实还有一个又简单又好用又快捷的方法就是 1 只要你记得你的U盘里的任何一个文件或者文件夹的名称 xff0c 2 然后搜索U盘
  • FreeRTOS 删除任务

    FreeRTOS 删除任务 概述 任务的删除使用的 API 为 xff1a void vTaskDelete TaskHandle t xTask 任务删除主要是两种情况 xff1a 自删除 xff0c 即在任务本身的 TaskCode 中
  • 使用 stream buffer 传递数据

    使用 stream buffer 传递数据 概述 如前所述 xff0c 队列虽然提供了任务之间传递数据的功能 xff0c 但没有对通知机制进行优化 xff0c 即不方便实现多次采集不同长度的数据 xff0c 然后触发一次通知接收的机制 特性
  • 使用 message buffer 传递数据

    使用 message buffer 传递数据 概述 MessageBuffer xff0c 即消息缓冲区 xff0c 是在流式缓冲区的基础上实现的针对离散消息的专用通信组件 xff0c 其进一步针对 消息 进行设计改进 在 StreamBu
  • FreeRTOS 任务间通信与同步总结

    FreeRTOS 任务任务同步与数据传递 xff08 通信 xff09 总结 概述 本章主要介绍了 RTOS 系统中数据传递的机制 根据数据传递的目的 xff0c 可以分为同步 消息通信两种 其中同步是指协调程序运行的先后顺序 xff0c
  • RTOS 中 Task 之间资源共享示例

    RTOS 中 Task 之间资源共享示例 什么是共享资源 大型项目往往需要创建多个任务 xff0c 任务之间协同合作完成一个大型的功能 在前述的章节中 xff0c 我们讲述了任务间的同步与通信 xff0c 但合作与竞争总是相辅相成的 任务
  • RTOS共享资源保护-优先级反转与解决策略

    RTOS 中的优先级反转与解决策略 概述 上节讲述了可以使用二值信号量实现任务 任务之间的共享资源的保护 二值信号量的确完成了保护共享资源的任务 但在一些情况下 这种策略会带来副作用 即优先级反转 优先级反转是如何产生的 理想情况下 按照我
  • RTOS 驱动开发篇-通过 RTOS 组件实现按键驱动-优化1

    RTOS 驱动开发篇 通过 RTOS 组件实现按键驱动 优化1 概述 一个好的驱动程序需要数据关系清晰 代码可复用性高 并且便于维护 如在 RTOS 驱动开发篇 通过 RTOS 组件实现按键驱动1 中所述的那样 当前的按键驱动代码只是为了让
  • RTOS 驱动开发篇-通过 RTOS 组件实现按键驱动-优化2

    RTOS 驱动开发篇 通过 RTOS 组件实现按键驱动 优化2 概述 一个好的驱动程序需要数据关系清晰 代码可复用性高 并且便于维护 如在 RTOS 驱动开发篇 通过 RTOS 组件实现按键驱动1 中所述的那样 基础版本的按键驱动代码只是为