文章目录

  • 1 软定时器的原理与创建
    • 1.1 问题概述
    • 1.2 设计原理
    • 1.3 设计实现

1 软定时器的原理与创建

1.1 问题概述

在实际应用中,常常需要周期性或者在指定时间做一件事情:

  • 周期性:在指定的延时开始做某件事情,然后周期性重复执行。
  • 一次性:在指定的延时开始后做某件事情,执行一次后立即结束。


显然,硬件定时器有限,而这种需求可能有很多个。单纯依赖硬件定时器不能满足需求。也许,可以使用任务+tTaskDelay()。但是,如果每种需求都使用一个任务的话,导致任务很多,资源开销太大。


能否只用一个任务满足所有需求?

1.2 设计原理

每种需求的所有信息,保存到软定时器结构。

这时又出现了一个问题:如果定时器任务可能被更高优先级的任务抢占CPU运行,导致刷新定时器列表的时间滞后。

为了保证时间确定,我们可以增加一条在时钟节拍中断处理的定时器列表。

总体结构如下:

1.3 设计实现

定义定时器结构:

定时器初始化:


参考资料:

  1. 【李述铜】从0到1自己动手写嵌入式操作系统

软定时器的原理与创建相关推荐

  1. [单片机框架] [app_led] 利用软定时器实现闪烁和呼吸等灯光模式

    文章目录 一.前言 1.什么是呼吸灯 2.如何实现呼吸灯 二.简介 三.使用例子: 三.示例代码 一.前言 提示:本文使用的芯片并非STM32系列,利用定时器实现呼吸灯是从寄存器层面讲解的,但是对于不 ...

  2. lwip协议栈中超时定时器实现原理

    lwip协议栈中超时定时器实现原理 1,超时定时器存在的目的: tcpip协议中存在很多需要定时处理的任务,包括一次性超时处理和周期性超时处理. 以tcp传输为例,每条连接总共需要建立七个定时器,依次 ...

  3. c语言定时器作用,Go语言定时器实现原理及作用

    对于任何一个正在运行的应用,如何获取准确的绝对时间都非常重要,但是在一个分布式系统中我们很难保证各个节点上绝对时间的一致性,哪怕通过 NTP 这种标准的对时协议也只能把时间的误差控制在毫秒级,所以相对 ...

  4. GoLang定时器实现原理

    简介 工作中经常有定时执行某些代码块的需求,如果是PHP代码,一般写个脚本,然后用Cron实现. Go里提供了两种定时器:Timer(到达指定时间触发且只触发一次)和 Ticker(间隔特定时间触发) ...

  5. [单片机框架] [app_led] [WS2812x] 利用软定时器实现WS2812x闪烁和呼吸等灯光模式

    引脚编号 引脚名称 说明 1 DO 控制数据信号输出端 2 DI 控制数据信号输入端 3 VCC 控制电路电源正极 4 NC 空脚 5 VDD LED电源正极 6 VSS 电源负极 数据时序图 0,1 ...

  6. python 定时器实现原理_python线程定时器Timer实现原理解析

    这篇文章主要介绍了python线程定时器Timer实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.线程定时器Timer原理 原理比较 ...

  7. c语言定时器原理,软件定时器实现原理、测试及应用设计

    分析μC/OSII操作系统软件定时器的算法,以及影响定时器精度的抖动问题产生的原因:提出定时器管理任务处理器占用率的计算公式,并进行了实验测试.实验结果表明,μC/OSII软件定时器具有ms级的最小分 ...

  8. 软定时器的删除与状态查询

    文章目录 1 软定时器的删除与状态查询 1 软定时器的删除与状态查询 定时器的删除: 定时器状态查询: 参考资料: [李述铜]从0到1自己动手写嵌入式操作系统

  9. 软定时器的启动与停止

    文章目录 1 软定时器的启动与停止 1 软定时器的启动与停止 软定时器单独开一个定时器任务来处理,硬定时器直接放在Systick中断中进行处理. 定时器启动: 定时器停止: 具体的实现代码如下: /* ...

最新文章

  1. 在 Java 应用程序中使用 Elasticsearch: 高性能 RESTful 搜索引擎和文档存储快速入门指南
  2. [caffe解读] caffe从数学公式到代码实现2-基础函数类
  3. OCF 试图为物联网建立标准,但它面临着不小的挑战
  4. python中的列表理解_掌握『Python列表理解』需要知道的9件事,你知道了吗?
  5. Java网络编程从入门到精通(25):创建ServerSocket对象
  6. 科研不是比赛,而是一种对未知和完美的自我追求——跟邢波(Eric Xing)面对面聊科研...
  7. 10个最新交互式Web设计实例欣赏
  8. 地理和遥感数据获取方法
  9. c#Word模板转PDF,c#word模板生成新的word
  10. appium 常用键盘操作
  11. 111.绘制正态分布曲线
  12. WebStorm的下载与安装
  13. HTML网页字体动态显示
  14. sqlplus导数_GitHub - Erik-Yim/blog: Everything about database,bussiness.(Most for PostgreSQL).
  15. 智能语音机器人语音识别系统
  16. 对话哈佛大学教授Lukin:量子计算将在我们有生之年普及! | AI英雄
  17. Java代码的登录界面
  18. 404究竟是什么意思呢?像404,200,503等数字究竟是什么东西
  19. hdu 5148 树形dp,分组背包
  20. 用程序员的语言:5000工科男抢200女同学做女朋友,怎么完美解决

热门文章

  1. 1.13 梯度检验-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
  2. 8.5 特征选择-机器学习笔记-斯坦福吴恩达教授
  3. DFTug - Architecture Your Test Design
  4. 不讲嫖德?这些年接触/使用的网页剪辑工具小汇总大总结
  5. 第二十四章:页面导航(五)
  6. 《JAVA编程思想》学习笔记——第三章 操作符
  7. Java中书写要注意的地方
  8. Android中代码运行指定的Apk
  9. 用wget循环获取指定url下的文件
  10. android,iOS,win8我的观点