• RQ 任务:IRQ 任务是指通过中断服务程序进行触发的任务,此类任务应该设置为所有任务里面优先 级最高的。
  • 高优先级后台任务:比如按键检测,触摸检测,USB 消息处理,串口消息处理等,都可以归为这一类 任务。
  • 低优先级的时间片调度任务:比如 emWin 的界面显示,LED 数码管的显示等不需要实时执行的都可 以归为这一类任务。实际应用中用户不必拘泥于将这些任务都设置为优先级 1 的同优先级任务,可以 设置多个优先级,只需注意这类任务不需要高实时性。
  • 空闲任务:空闲任务是系统任务。
  • 特别注意: IRQ 任务和高优先级任务必须设置为阻塞式(调用消息等待或者延迟等函数即可) , 只有这样, 高优先级任务才会释放 CPU 的使用权, ,从而低优先级任务才有机会得到执行。

对于 STM32F103 来说,中断优先级的数值越小,优先级越高。

而 FreeRTOS 的任务优先级是,任务优先级数值越小,任务优先级越低。

二、

1. 中断服务函数:
中断服务函数是一种需要特别注意的上下文环境,它运行在非任务的执行环境下(一
般为芯片的一种特殊运行模式(也被称作特权模式)),在这个上下文环境中不能使用挂
起当前任务的操作,不允许调用任何会阻塞运行的 API 函数接口。另外需要注意的是,中
断服务程序最好保持精简短小,快进快出,一般在中断服务函数中只做标记事件的发生,
然后通知任务,让对应任务去执行相关处理,因为中断服务函数的优先级高于任何优先级
的任务,如果中断处理时间过长,将会导致整个系统的任务无法正常运行。所以在设计的
时候必须考虑中断的频率、中断的处理时间等重要因素,以便配合对应中断处理任务的工
作。
2. 任务:
任务看似没有什么限制程序执行的因素,似乎所有的操作都可以执行。但是做为一个
优先级明确的实时系统,如果一个任务中的程序出现了死循环操作(此处的死循环是指没
有阻塞机制的任务循环体),那么比这个任务优先级低的任务都将无法执行,当然也包括
了空闲任务,因为死循环的时候,任务不会主动让出 CPU,低优先级的任务是不可能得到
CPU 的使用权的,而高优先级的任务就可以抢占 CPU。这个情况在实时操作系统中是必须
注意的一点,所以在任务中不允许出现死循环。如果一个任务只有就绪态而无阻塞态,势
必会影响到其他低优先级任务的执行,所以在进行任务设计时,就应该保证任务在不活跃
的时候,任务可以进入阻塞态以交出 CPU 使用权,这就需要我们自己明确知道什么情况下
让任务进入阻塞态,保证低优先级任务可以正常运行。在实际设计中,一般会将紧急的处
理事件的任务优先级设置得高一些。

3. 空闲任务:
空闲任务(idle 任务)是 FreeRTOS 系统中没有其他工作进行时自动进入的系统任务。
因为处理器总是需要代码来执行——所以至少要有一个任务处于运行态。 FreeRTOS 为了保
证这一点,当调用 vTaskStartScheduler()时, 调度器会自动创建一个空闲任务,空闲任务是
一个非常短小的循环。 用户可以通过空闲任务钩子方式,在空闲任务上钩入自己的功能函
数。通常这个空闲任务钩子能够完成一些额外的特殊功能,例如系统运行状态的指示,系
统省电模式等。除了空闲任务钩子, FreeRTOS 系统还把空闲任务用于一些其他的功能,比
如当系统删除一个任务或一个动态任务运行结束时, 在执行删除任务的时候,并不会释放
任务的内存空间,只会将任务添加到结束列表中, 真正的系统资源回收工作在空闲任务完
成,空闲任务是唯一一个不允许出现阻塞情况的任务,因为 FreeRTOS 需要保证系统永远
都有一个可运行的任务。
对于空闲任务钩子上挂接的空闲钩子函数,它应该满足以下的条件:
 永远不会挂起空闲任务;
 不应该陷入死循环,需要留出部分时间用于系统处理系统资源回收。
4. 任务的执行时间:
任务的执行时间一般是指两个方面,一是任务从开始到结束的时间,二是任务的周期。
在系统设计的时候这两个时间候我们都需要考虑,例如,对于事件 A 对应的服务任务
Ta,系统要求的实时响应指标是 10ms,而 Ta 的最大运行时间是 1ms,那么 10ms 就是任务
Ta 的周期了, 1ms 则是任务的运行时间,简单来说任务 Ta 在 10ms 内完成对事件 A 的响应
即可。此时,系统中还存在着以 50ms 为周期的另一任务 Tb,它每次运行的最大时间长度
是 100us。在这种情况下,即使把任务 Tb 的优先级抬到比 Ta 更高的位置,对系统的实时
性指标也没什么影响,因为即使在 Ta 的运行过程中, Tb 抢占了 Ta 的资源,等到 Tb 执行
完毕,消耗的时间也只不过是 100us,还是在事件 A 规定的响应时间内(10ms), Ta 能够安
全完成对事件 A 的响应。但是假如系统中还存在任务 Tc,其运行时间为 20ms,假如将 Tc
的优先级设置比 Ta 更高,那么在 Ta 运行的时候,突然间被 Tc 打断,等到 Tc 执行完毕,
那 Ta 已经错过对事件 A(10ms)的响应了,这是不允许的。所以在我们设计的时候,必
须考虑任务的时间,一般来说处理时间更短的任务优先级应设置更高一些。

三、CPU 利用率的基本概念
CPU 使用率其实就是系统运行的程序占用的 CPU 资源,表示机器在某段时间程序运行的情况,如果这段时间中,程序一直在占用 CPU 的使用权,那么可以人为 CPU 的利用率是 100%。 CPU 的利用率越高,说明机器在这个时间上运行了很多程序,反之较少。利用率的高低与 CPU 强弱有直接关系,就像一段一模一样的程序,如果使用运算速度很慢的CPU,它可能要运行 1000ms,而使用很运算速度很快的 CPU 可能只需要 10ms,那么在1000ms 这段时间中,前者的 CPU 利用率就是 100%,而后者的 CPU 利用率只有 1%,因为1000ms 内前者都在使用 CPU 做运算,而后者只使用 10ms 的时间做运算,剩下的时间CPU 可以做其他事情。
FreeRTOS 是多任务操作系统,对 CPU 都是分时使用的:比如 A 任务占用 10ms,然后 B 任务占用 30ms,然后空闲 60ms,再又是 A任务占 10ms, B 任务占 30ms,空闲 60ms;
如果在一段时间内都是如此,那么这段时间内的利用率为 40%,因为整个系统中只有 40%的时间是 CPU 处理数据的时间。

CPU 利用率的作用
一个系统设计的好坏,可以使用 CPU 使用率来衡量,一个好的系统必然是能完美响应
急需的处理,并且系统的资源不会过于浪费(性价比高)。举个例子,假设一个系统的
CPU 利用率经常在 90%~100%徘徊,那么系统就很少有空闲的时候,这时候突然有一些事
情急需 CPU 的处理,但是此时 CPU 都很可能被其他任务在占用了,那么这个紧急事件就
有可能无法被相应,即使能被相应,那么占用 CPU 的任务又处于等待状态,这种系统就是
不够完美的,因为资源处理得太过于紧迫;反过来,假如 CPU 的利用率在 1%以下,那么
我们就可以认为这种产品的资源过于浪费,搞一个那么好的 CPU 去干着没啥意义的活(大
部分时间处于空闲状态),使用,作为产品的设计,既不能让资源过于浪费,也不能让资
源过于紧迫,这种设计才是完美的,在需要的时候能及时处理完突发事件,而且资源也不
会过剩,性价比更高。

freertos任务优先级分配相关推荐

  1. FreeRTOS任务优先级

    FreeRTOS任务优先级数值越小优先级越低,系统在运行过程中允许修改任务优先级 修改任务优先级的主要工作包括: 如果新的优先级大于当前任务优先级,则请求切换 重新设置事件列表值 将任务从原就绪列表中 ...

  2. FreeRTOS 任务优先级说明

    freeRTOS任务优先级与Unix进程优先级不同 FreeRTOS任务优先:任务优先级数值越小,任务优先级越低. Unix任务优先:        进程优先级数值越小,进程优先级越高. 下面对 Fr ...

  3. FreeRTOS任务优先级和系统心跳Tick

    1. FreeRTOS任务优先级介绍 当我们使用xTaskCreate() API函数创建一个任务的时候,会为任务赋予一个初始的优先级,当然这个优先级可以在调度器启动后,我们可以使用vTaskPrio ...

  4. FreeRTOS 任务优先级分配方案

    任务优先级说明 下面对 FreeRTOS 优先级相关的几个重要知识点进行下说明,这些知识点在以后的使用中务必要掌握牢固.  FreeRTOS 中任务的最高优先级是通过 FreeRTOSConfig. ...

  5. FreeRTOS任务优先级说明

    https://www.cnblogs.com/yangguang-it/p/7156445.html#4217682 下面对 FreeRTOS 优先级相关的几个重要知识点进行下说明,这些知识点在以后 ...

  6. cm0中断优先级_转:第13章 FreeRTOS任务优先级修改及其分配方案

    FreeRTOS的配置: FreeRTOSConfig.h文件中的配置如下: /* Ensure stdint is only used by the compiler, and not the as ...

  7. STM32中断优先级、FreeRTOS中断优先级,任务优先级

    STM32中断优先级 NVIC(Nested Vectored Interrupt Controller)嵌套向量中断控制器,管理着整个芯片与中断相关的功能,它跟内核紧密耦合,是内核里面的一个外设.各 ...

  8. STM32F103移植FreeRTOS必须搞明白的系列知识---1(Cortex-CM3中断优先级)

    STM32F103移植FreeRTOS必须搞明白的系列知识---1(Cortex-CM3中断优先级) STM32F103移植FreeRTOS必须搞明白的系列知识---2(FreeRTOS任务优先级) ...

  9. Freertos基本概念----(猫和老鼠)

    1.实时操作系统与非实时操作系统的区别 FreeRTOS中优先级的数值越小,代表该任务的优先级越低,最低优先级为0 解释:哈皮狗的优先级最高 次之是汤姆猫 最后是杰瑞鼠 之后依然用这个例子 现在有一块 ...

最新文章

  1. rocketmq(三 java操作rocket API, rocketmq 幂等性)
  2. 设计模式 — 结构型模式 — 享元模式
  3. Objective-C中把URL请求的参数转换为字典
  4. 算法:删除排序数组中的重复项||
  5. OpenCV图像处理——修复失焦模糊的图像
  6. FinTech浪潮已到,五大金融场景将迎变革
  7. 模拟Struts2实现
  8. BENET上海分公司网络改造项目设计实施方案(S1项目实践)
  9. 红宝书阅读笔记——OPENGL渲染管线
  10. 高通驱动一键安装_一键重装神器,装系统简单的超乎想象!
  11. mysql 实例复制_MySQL 复制详解及简单实例
  12. OPPO Reno 5G版高调宣布上市时间:已具备上市条件
  13. 问题 D: 求圆的面积和周长 山东科技大学oj c 语言
  14. 华为P40或将搭载鸿蒙,华为P40或将在明年3月发布,很有可能是首部搭载鸿蒙的手机...
  15. 匈牙利命名法、骆驼命名法、帕斯卡(pascal)命名法 C#命名规范
  16. 谈一谈手游的运营与推广的那些事儿!
  17. 解决mysql.sock连接不上问题:Can 't connect to local MySQL server through socket '/tmp/mysql.sock '(2)
  18. (六)我的JavaScript系列:更好的JavaScript之CoffeeScript
  19. iPad可以用来学计算机吗,我的ipad都用来做什么?学习娱乐两不误
  20. 从金山毒霸看这个社会的“底线”

热门文章

  1. vgc机器人编程1到13题_杀戮尖塔故障机器人怎么玩 故障机器人玩法详解
  2. 通过pygame实现的python飞机大战项目
  3. 利用AI+大数据的方式分析恶意样本(十四)
  4. 计算机/软件专硕被划分到电子信息类!工程学位大调整!
  5. 百分点科技数据猿联合发布《2022年“3·15”晚会消费维权行业预测报告》
  6. 植物大战僵尸中文版修改器python实现
  7. 【一级考试专题-4】游泳池蓄水
  8. JavaScript知识归纳(2)
  9. 10月14日苹果第二场秋季新品发布会 iphone12发布时间确定
  10. 2020年第十一届蓝桥杯JavaC组(十月场)真题解析