震惊!终于有人全面解析任务调度框架了!

1. 简单的顺序执行程序


2.前后台执行程序:在顺序执行的情况上增添中断前台处理机制,配置顺序执行的后台大循环程序,组合成可以实时响应的程序。

后台还是我们平时写的mian里 while里的函数

前台类似我们最开始写的中断函数 而区别在于这个中断(有优先级之分)里边我们加入了执行任务的函数 以便提高时间利用率。

(1)若中断函数里的内容(即需要执行任务的)和其他函数一起放在大循环里(没有前台),且执行其他函数时间损耗大 则无法及时执行原本中断函数里的内容(可能会造成数据丢失等)

(2)若中断函数里的内容(即需要执行任务的)单独放在大循环里 而我们理想是每次执行一次这个任务时都有缓冲的时间间隔 放在大循环里后则会一直不断执行此函数

 

Eg:(可参考下图)

 

3. 时间片轮循法:在前后台的执行架构上,通过计数器进一步规划程序,定时执行特定的片段。

Eg:

  1. 大循环里的函数所要执行每个步骤我们都给他规定一个固定的时间
  2. 假如现在50ms的时候,会执行2ms,10ms, 50ms的程序,但假如这三个任务的时间累和比较长的话,一起执行会造成卡顿
  3. 若这三个任务执行时间大于2ms,则下一个2ms不能及时的执行;若此2ms任务是个紧急任务的话 实时性就差了

PS:(DWT)

写在前面:

STM32 DWT时间戳功能实现
  1.ARM 的cortex m3 m4 m7可用。
  2.精度:1/内核频率(s)。
  3.实现流程:
     (a)先使能DWT外设,由内核调试寄存器DEM_CR的位24控制,写1使能。
   (b)使能CYCCNT寄存器之前,先清0。
   (c)使能CYCCNT寄存器,由DWT_CTRL的位0控制,写1使能

 

A.任务调度基准表(时间)

注意这里 vTask_xms可以换成其他·某个具体函数but必须是void类型

CUZ: 因为这个表格里写的是函数指针, 任务调度是用函数指针进入函数的

而此任务调度只能够支持这个类型的函数

( PS: void和指针指向哪里没有关系 void是函数的返回值为空, 函数本身是有地址的,

利用函数指针 结构体里就可以用函数指针来调用函数了;

就可以写出     aaa.bbb(cc,d); 这种     or  a->b(c,d); 这样

 

B.开(关)时间测量开关

C.最后 运行放在主函数while里就OK了

Dwt主要优点 就是不占用中断, 没有压栈出栈的过程 精度高

 

4. 实时操作系统:实时操作系统又叫RTOS,实时性,RTOS的内核负责管理所有的任务,内核决定了运行哪个任务,何时停止当前任务切换到其  他任务,这个是内核的多任务管理能力。多任务 管理给人的感觉就好像芯片有多个CPU,多任务管理实现了CPU资源的最大化利用,多任务管理有助于实现程序的模块化开发,能够实现复杂的实时应用。
除了实时性,还有可剥夺内核,顾名思义就是可以剥夺其他任务的CPU使用权,它总是运行就绪任务中的优先级最高的那个任务。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

"Judy"

打赏点碎银子给孩子买裙子也行~

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

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

打赏作者

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

抵扣说明:

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

余额充值