CUI_RTOS笔记(一):总体架构

CUI_RTOS的结构如上图所示。本质是一条环形的任务链表下函数的循环链表。

主函数main中执行 os_runTask(),每次执行则会看环形任务链表下有没有任务链条,如果有则执行该链条的下一个节点函数。

如果任务链条是空的,则会从环形任务链表删除,被摘掉。

任务链条每次执行一个节点函数,如果该函数的时间延时结束,则执行下一个节点函数。如果下一个节点是空,则返回第一个节点执行。

函数 os_runTask() 被执行时,会有下面情形发送:

        遍历环形任务链下所有的链条。

        如果节点函数的延时时间到,则执行一次下一个节点函数。

目前有三种函数可以被挂载到任务链条下:

        ① 普通任务函数 ,使用 OS_AddFunction 添加

        ② 条件函数:使用 OS_AddJudegeFunction 添加

        ③ 循环次数函数:使用 OS_AddCycleFunction 添加

依次说明如下:

添加任务函数 : u32 OS_AddFunction(TaskStr* task,osfun fun,u32 time,void* param)

参数:        task        任务指针,代表是哪根任务链条。

                fun        添加的执行函数。

                time      time毫秒之后,该节点结束。再次执行到该链条时,会执行下一个节点函数。

                              time如果等于0,则会删除前面所有节点函数。

                 param 传递给fun的参数

返回值:新添加的节点函数地址

添加条件函数:OS_AddJudegeFunction(TaskStr* task,osfun fun,u32 time,jugefun funJuge,void* param)

参数:        task        任务指针,代表是哪根任务链条。

                fun        添加的执行函数。

                time      time毫秒之后,该节点结束。再次执行到该链条时,会执行下一个节点函数。

                funJuge 当该函数返回值为真时,不论延时time有没有结束,都跳出,删除前面所有节点函数后,执行下一个节点函数

                 param 传递给jugefun 的参数

返回值:新添加的节点函数地址

添加循环次数函数:u32 OS_AddCycleFunction(TaskStr* task,TYPE_NUMBER num)

参数:        task        任务指针,代表是哪根任务链条。

                num        指该节点之前的节点函数反复执行的次数。执行完成之后,前面所有的节点会被删除,然后接着执行下一个节点函数。

返回值:不需要关心。

添加循环次数函数,并没有添加有意义的函数,功能只是将前面的节点循环几次执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

laocui1

你的鼓励是我创作的最大动了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值