干货 | 小论定时器玩法(时间轮询法)

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代码在tim.c文件上,开启定时器中断,并且写上自己的回调函数。

写好自己的线程函数

初始化以及注册线程。

(0)

相关推荐

  • 性能测试总结

    一.概念了解 1. 性能测试的维度和类型 编号 类型 概念 标准 举例 1 基准测试 给系统施加较低压力,查看系统运行状况并记录相关数据作为基础参考 10%~20% 软件最多只给100个人使用,先用1 ...

  • 【RT-Thread笔记】内核对象模型

    RT-Thread中的对象有哪些? RT-Thread包括了很多不同类型的对象,如线程,信号量,互斥量等.在代码中,这些对象被汇总到一个枚举中(在rtdef.h中): 左右滑动查看全部代码>&g ...

  • 线程安全和可重入的区别

    何谓线程安全 如果一项操作可以安全地被多个线程执行(甚至是多个线程同时执行这项操作),则我们称这项操作为线程安全的. 何谓可重入 如果当某项操作正在另一个上下文中执行的时候,在当前上下文中可以再次执行 ...

  • 干货 | Jmeter 如何保证抢购、秒杀活动正常运行?

    干货 | Jmeter 如何保证抢购、秒杀活动正常运行?

  • 线程间到底共享了哪些进程资源?

    进程和线程这两个话题是程序员绕不开的,操作系统提供的这两个抽象概念实在是太重要了. 关于进程和线程有一个极其经典的问题,那就是进程和线程的区别是什么?相信很多同学对答案似懂非懂. 记住了不一定真懂 关 ...

  • 7种小场花样玩法,打造费德勒般的细腻手法!

    每次一上场就开始正反手小场对拉热身? 太常规.太无趣了! 今天分享7个小场花式玩法,不仅能快速热身,还能巩固各项技术,打造费德勒般的细腻手法! 本期内容: 7种小场花样玩法 1.半区对拉 站在发球线附 ...

  • 80%茶叶品牌商都在用的小程序营销玩法,居然是......

    如何提高消费者复购率? 付款后,茶叶老板直接告知消费者,扫一扫门店小程序二维码,即可获得一次大转盘抽奖的机会,100%中奖,奖品是100元无门槛代金券.消费者能不心动吗? 这是茶叶品牌商在布局智慧零售 ...

  • 直播和视频号的摸索,直播+企业微信+小程序的玩法。

    今天是端午前的一天,下午,喝茶,大家开始讨论过节. 讨论视频号,有个伙伴说,现在有很多人在做直播+企业微信+小程序=闷声发大财? 问我有什么看法? 对于直播,对于视频号,看法肯定是不同的. 在此我们先 ...

  • 抖音0粉丝变现项目“小蓝条”小程序收益玩法,新手详细教程来了

    抖音0粉丝变现项目“小蓝条”小程序收益玩法,新手详细教程来了

  • 干货!你真的会学习吗?六大高效学习法/时间管理法 等你认领!

    今天给大家介绍6个学习方法及时间管理法,超级实用,学习效率立马提升!你确定不来看看吗? 1.费曼学习法 推荐指数 ★★★★★ 简单地说,费曼学习法就是把一个概念,简明扼要地解释给别人听.教别人的同时, ...

  • 干货 | 小玩 Cyclone TCP

    EEWORLD 电子资讯 犀利解读 技术干货 每日更新 对于socket编程,如果自己讲一大堆,会变得班门弄斧.所以还是直接进入重点好了.本来就想着在单片机跑下lwip,后来free叔叔介绍推荐了cy ...

  • 紫砂小知识:玩壶入门的三个必经阶段

    紫砂壶百科全书  宜兴的独特材质--紫砂,造就了我们广大的能工佳匠,造就了宜兴这个陶都名片.他们创造的宝贵财富和一件件留存于世的精美工艺品,就是工艺的证明.品质的证明.所以说--紫砂是一种特质.紫砂是 ...

  • 盖茨夫妇离婚为避税?可能性很小,但美国富豪的花式避税法可以讲一讲

    来源:纵相新闻 记者 谢斯河 当地时间5月3日,比尔·盖茨夫妇在毫无征兆的情况下突然宣布离婚,结束了27年的婚姻. 据最新福布斯排行榜,盖茨目前财富位居全球第四,身价约合人民币8000亿左右.这难免不 ...

  • 小团线玩起来

    新的一天,让快乐重启,让忧虑清零~