EEWORLD

电子资讯 犀利解读

技术干货 每日更新

经常来说,对于一些不复杂的单片机应用,而且对于内存和存储要求比较严格,又需要多分时去处理一些指定的任务,在无法使用RTOS的情况下,使用一个硬件定时器,来建立各种任务时间标志位,是比较通用的做法,但是随着时间标志位变量的增加,代码的维护以及简洁度却越来越艰难。

因此,楼主使用了一种类似线程管理的时间轮询方式(可能用词不当),来进行一个硬件定时器模拟多个软件定时器(以下就说明为线程吧),支持线程注册、注销、挂起、唤醒、处理等接口。在使用上,只需要引用两个接口,即可开始工作。     先说明下此接口文件的头文件的一些变量,THREAD_NUM_MAX是指能支持最大的线程数目,理论上可以达到四个字节长度数目。使用时候先初始化线程Thread_Init,然后把Thread_RunCheck放在硬件定时器上1ms查询一次当作时钟基准,然后Thread_Process放于while里面轮询查找线程标志。需要定时运行某个任务时候(函数),在进入while里面之前使用注册函数Thread_Login即可。主要退出这个函数使用Thread_Logout即可。下面会举个example来说明这些接口的使用。

接下来简单介绍下一些接口的实现。源码会放于附件,具体的可以自行分析理解。

首先来说明下两个结构体定义。首先第一个结构体是对线程状态封装,包括线程运行标识flag,当定时轮询到这个线程此标志位会置位,运行条件con包括单次执行运行条件,也就是说此线程只执行一次,还有多次执行条件,永久执行条件。此些条件在头文件的枚举定义。运行次数表示执行的次数,但为永久执行条件,此cnt赋值为0即可。frep为运行周期,即是多少毫秒运行一次,fun是线程函数的指针。thread_manage结构体是线程管理结构体,里面包含当前线程运行数和挂起数。在这里我们申请下一个静态线程管理实例变量。static struct thread_manage thread;所有的线程状态变量都在这里。

大概说明下线程是如何一个一个轮询执行的。主要在Thread_Process接口里面。

同样再来分析下线程注册接口,这是在初始化的时候需要用到。

线程运行条件核对,放在于1ms的硬件定时器中断或者回调中,以此轮询查找线程运行周期状态是否满足。

在这里使用的是nucle-L011板子,利用cube生成代码工程。使用两个外设,GPIO(LED)和usart,在这里我们新建两个线程,一个500ms点灯,一个1s串口发送数据。

 生成的cube代码在文件上,开启定时器中断,并且写上自己的回调函数。

 写好自己的线程函数

 初始化以及注册线程。

jQuery 一次定时器_干货 | 小论定时器玩法(时间轮询法)相关推荐

  1. 怎么做轮播图中的小圆点html,JQuery和html+css实现带小圆点和左右按钮的轮播图实例...

    是的!你没看错!还是轮播图.这次的JQuery的哟!! CSS代码: /*轮播图 左右按钮 小白点*/ #second_div{ margin-top: 160px; } .img_box{ over ...

  2. html圆形按钮和箭头同时变色,JQuery和html+css实现带小圆点和左右按钮的轮播图

    是的!你没看错!还是轮播图.这次的JQuery的哟!! CSS代码: /*轮播图 左右按钮 小白点*/ #second_div{ margin-top: 160px; } .img_box{ over ...

  3. stm8s003程序跑飞_微信小程序只玩跳一跳?OUT啦!带你玩更好玩的微信小游戏!...

    阅读本文前,请您先点击上面的"蓝色字体",再点击"关注",这样您就可以免费收到最新内容了.每天都有分享,完全是免费订阅,请放心关注.内容来源网络,侵权联系删除. ...

  4. multiprocessing.queue取数据要加锁么_干货 | 小程序多页面接口数据缓存

    小程序里面多个页面,有时候会需要用到同一个接口的数据.而这些数据全局来说只需要拉取一遍,如果要存到缓存,要怎么保证其他页面取缓存的时候,数据已经拉取回来了呢? 答案是多页面接口数据缓存实现. 思路设计 ...

  5. html图片圆点切换,JQuery和html+css实现带小圆点和左右按钮的轮播图

    是的!持环开行打进对端架处参触架码我通会法时果你没看错!还是轮播图.这次的JQuery的直分调浏器代,刚求的一学础过功互有解小久宗点差维含数如哟!! CSS代码: /*轮播图 左右按钮 小白点*/ # ...

  6. java 重置定时器_可重置Java定时器

    我想有一个java.utils.Timer与一个可重置时间在java.I需要设置一次off事件发生在X秒.如果在创建定时器的时间和X秒之间没有发生任何事情,则事件会正常发生. 然而,如果在X秒之前,我 ...

  7. html图片圆点切换,JQuery和html+css实现带小圆点和左右按钮的轮播图实例

    搜索按钮 $("#ss").click(function(){ var new_li = $(" "+ $("#skuang").val() ...

  8. python自己做个定时器_简单实现python定时器

    下面介绍以threading模块来实现定时器的方法.(课课家) 使用前先做一个简单试验: import threading def sayhello(): print "hello worl ...

  9. 杂项设备驱动框架_干货分享丨轻松玩转 Huawei LiteOS 传感框架

    摘要:LiteOS传感框架将物联网终端设备上不同类型的传感器统一管理,通过抽象不同类型传感器接口,屏蔽其硬件细节,做到"硬件"无关性,非常方便于物联网设备的开发.维护和功能扩展. ...

最新文章

  1. python代码壁纸-python实现壁纸批量下载代码实例
  2. 做小程序费用太高?帮你选一个最省钱的方案
  3. 9开头的两位数相乘速算法
  4. 分布式机器学习框架:MxNet 前言
  5. .NetCore使用skywalking实现实时性能监控
  6. ubuntu 16.04 源码安装samba并且配置
  7. Char05 Ansible 最佳实践
  8. 食品行业十大进销存软件功能大对比,我教你怎么选
  9. 10个重要的算法C语言实现源代码:拉格朗日,牛顿插值,高斯,龙贝格,牛顿迭代,牛顿-科特斯,雅克比,秦九昭,幂法,高斯塞德尔 (转帖)
  10. 手机号归属地能改吗?支付及通讯行业怎么看?
  11. 网络用语html,最新网络用语
  12. 二阶偏导相等的一个充分条件
  13. 编写有效的测试用例及如何进行用例评审
  14. 黄淮学院计算机类专业属于几本,黄淮学院是几本院校
  15. 分享一个动图制作软件,简单实用易操作,迅速得到你想要的GIF效果图
  16. Wi-Fi 安全协议
  17. 2022年NOC软件创意编程(学而思赛道)决赛小学初中组python
  18. linux查看 jre 安装目录
  19. 操作系统内存管理之伙伴系统
  20. 利用sham-link实现路由还原

热门文章

  1. Linux C中的basename函数用法示例
  2. 为方便ATS管理建立的一些命令别名
  3. 3D场景高级合成技术学习
  4. Rocksdb Slice使用中的一个小坑
  5. UVALive2678:Subsequence
  6. angularjs 学习笔记 简单基础
  7. 存储过程的优缺点 (转载)
  8. 【读书笔记】iOS-网络-解析响应负载
  9. Log控制台打印设置
  10. Minimum Path Sum