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

 FreeRTOS 中任务的最高优先级是通过 FreeRTOSConfig.h 文件中的 configMAX_PRIORITIES 进行
配置的,用户实际可以使用的优先级范围是 0 到 configMAX_PRIORITIES – 1。比如我们配置此宏定
义为 5,那么用户可以使用的优先级号是 0,1,2,3,4,不包含 5,对于这一点,初学者要特别的注意。
 用户配置任务的优先级数值越小,那么此任务的优先级越低,空闲任务的优先级是 0。
 建议用户配置宏定义 configMAX_PRIORITIES 的最大值不要超过 32,即用户任务可以使用的优先级
范围是0到31。因为对于CM内核的移植文件,用户任务的优先级不是大于等于32的话, portmacro.h
文件中的宏定义configUSE_PORT_OPTIMISED_TASK_SELECTION会优化优先级列表中要执行的最
高优先级任务的获取算法(对于 CM 内核的移植文件,此宏定义默认是使能的,当然,用户也可以在
FreeRTOSConfig.h 文件中进行配置)。 相比通用的最高优先级任务获取算法,这两种方式的对比如
下:
   通用方式,没有优化---配置宏定义 configUSE_PORT_OPTIMISED_TASK_SELECTION 为 0:
   所有平台的移植文件都可以配置为 0,因为这是通用方式。
   纯 C 编写,比专用方式效率低。
   可用的优先级数量不限制。
   专用方式,进行优化---配置宏定义 configUSE_PORT_OPTIMISED_TASK_SELECTION 为为 1:
   部分平台支持。
   这些平台架构有专用的汇编指令,比如 CLZ(Count Leading Zeros)指令,通过这些指令可以加速算法执行速度。
   比通用方式高效。
   有最大优先级数限制,通常限制为 32 个。

 如果用户在 FreeRTOSConfig.h 文件中配置宏定义 configUSE_TIME_SLICING 为 1,或者没有配置

此宏定义,时间片调度都是使能的。 另外,只要芯片资源允许,可以配置任意多个同优先级任务。
(备注:没有定义 configUSE_TIME_SLICING,也能使用时间片调度是因为此宏定义默认已经在
FreeRTOS.h 文件中使能)
 FreeRTOS 中处于运行状态的任务永远是当前能够运行的最高优先级任务。 下一章节讲解调度器,大
家会对这个知识点有一个全面的认识。

任务优先级分配方案
对于初学者,有时候会纠结任务优先级设置为多少合适,因为任务优先级设置多少是没有标准的。对
于这个问题,我们这里为大家推荐一个标准,任务优先级设置推荐方式如下图 13.1 所示:

 IRQ 任务:IRQ 任务是指通过中断服务程序进行触发的任务,此类任务应该设置为所有任务里面优先级最高的。

 高优先级后台任务:比如按键检测,触摸检测,USB 消息处理,串口消息处理等,都可以归为这一类任务。

 低优先级的时间片调度任务:比如 emWin 的界面显示,LED 数码管的显示等不需要实时执行的都可以归为这一类任务。 实际应用中用户不必拘泥于将这些任务都设置为优先级 1 的同优先级任务,可以设置多个优先级,只需注意这类任务不需要高实时性。
 空闲任务:空闲任务是系统任务。
 特别注意:IRQ 任务和高优先级任务必须设置为阻塞式(调用消息等待或者延迟等函数即可),只有
这样,高优先级任务才会释放 CPU 的使用权,,从而低优先级任务才有机会得到执行。
这里的优先级分配方案是我们推荐的一种方式,实际项目也可以不采用这种方法。 调试出适合项目需求的才是最好的。

中断优先级和任务优先级区别
部分初学者也容易在这两个概念上面出现问题。 简单的说,这两个之间没有任何关系,不管中断的优
先级是多少,中断的优先级永远高于任何任务的优先级,即任务在执行的过程中,中断来了就开始执行中
断服务程序。
另外对于 STM32F103,F407 和 F429 来说,中断优先级的数值越小,优先级越高。 而 FreeRTOS
的任务优先级是,任务优先级数值越小,任务优先级越低。

 

FreeRTOS 任务优先级分配方案相关推荐

  1. FreeRTOS任务优先级说明

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

  2. FreeRTOS 任务优先级说明

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

  3. FreeRTOS任务优先级

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

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

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

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

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

  6. freertos任务优先级分配

    RQ 任务:IRQ 任务是指通过中断服务程序进行触发的任务,此类任务应该设置为所有任务里面优先 级最高的. 高优先级后台任务:比如按键检测,触摸检测,USB 消息处理,串口消息处理等,都可以归为这一类 ...

  7. [FreeRtos]任务状态切换和优先级设置

    1. 任务状态的切换 FreeRTOS中任务的状态可分为:未创建态.就绪态.运行态.挂起态.延时态五种状态. a: 调用xTaskCreate()函数将新建一个任务,新建的任务会加入到就绪列表,若新建 ...

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

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

  9. FreeRTOS互斥量 基于STM32

    文章目录 一.互斥量基本概念 二.互斥量的优先级继承机制 三.互斥量应用场景 四.互斥量运作机制 五.互斥量函数接口讲解 1.互斥量创建函数 xSemaphoreCreateMutex() 2.递归x ...

最新文章

  1. 某大厂程序员抱怨:“大厂镀金”是鬼话!从大厂裸辞后,面阿里、字节全都挂掉,连货拉拉都不要自己!...
  2. 李刚java视频_《Srping视频教程》疯狂Java 李刚老师[WMV]
  3. 微信(WeChat)电脑端多开
  4. Process类中与内存相关的属相不能更新!
  5. @Mybatis传多个参数
  6. leetcode 423. Reconstruct Original Digits from English | 423. 从英文中重建数字(Java)
  7. [渝粤教育] 温州医科大学 医用高等数学 参考 资料
  8. flex实现水平居中和两栏布局
  9. python在线问卷调查系统源代码_基于Python 练习1情况的在线问卷
  10. vue openlayer单击地图事件循环多次执行_Vue中$nextTick的理解
  11. windows平台oracle自动job,oracle删除oem中自动备份job
  12. 10 things they never teach in college about programming
  13. 医疗中的ai_医疗保健中自主AI的障碍
  14. 操作系统原理实验报告——读者写者
  15. java jdk运行_JDK如何运行
  16. 自定义原生jsonp跨域请求
  17. 讲道理 | 计算正交投影算子
  18. python游戏设计的课题背景_毕业设计游戏开题报告
  19. Feign详解4-Contract 源码
  20. sap模块介绍_SAP会计科目之 自动记账

热门文章

  1. 目前在线教育发展情况介绍
  2. 一章: CentOS6.5 网络配置、修改主机名、添加硬盘、压缩——解压方法、VNC—server配置
  3. Photoshop CC2018软件安装资料及教程
  4. struts2导入excel模板_「微干货」“人员其他数据导入”应用介绍
  5. linux复制文件快捷键,Linux基础学习(基本命令和文件操作)
  6. 电脑销售渠道_“新冠”影响下,平板电脑市场再现新商机
  7. Shell脚本实战之文件批量创建和修改
  8. 学习java的知识体系路线
  9. BZOJ4810: [Ynoi2017]由乃的玉米田
  10. 理解JS中的this的指向