FreeRTOS 任务优先级 【杂记】

news/2024/10/22 4:59:50/

FreeRTOS任务优先级

FreeRTOS任务优先级:任务优先级数值越小,任务优先级越低。
1、 FreeRTOS 中任务的最高优先级是通过 FreeRTOSConfig.h 文件中的configMAX_PRIORITIES 进行配置的,用户实际可以使用的优先级范围是 0 到 configMAX_PRIORITIES – 1。比如我们配置此宏定义为 5,那么用户可以使用的优先级号是 0,1,2,3,4,不包含 5。

2、用户配置任务的优先级数值越小,那么此任务的优先级越低,空闲任务的优先级是 0。

3、用户配置宏定义 configMAX_PRIORITIES 的最大值不要超过 32,即用户任务可以使用的优先级范围是0到31。
 

相同优先级

如果用户在 FreeRTOSConfig.h 文件中配置宏定义 configUSE_TIME_SLICING 为 1,或者没有配置此宏定义,时间片调度都是使能的。
 另外,只要芯片资源允许,可以配置任意多个同优先级任务,相同优先级则任务轮询运行。

(备注:没有定义 configUSE_TIME_SLICING,也能使用时间片调度是因为此宏定义默认已经在
FreeRTOS.h 文件中使能)

在这里插入图片描述

中断优先级

        无论何时中断的优先级都是最高的,中断的优先级永远高于任何任务的优先级,即任务在执行的过程中,中断来了就开始执行中断服务程序。一般配置为NVIC_PriorityGroup_4,0-15的优先级。0为最高,15为最低。 

#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY			15    //中断最低优先级
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY	5     //系统可管理的最高中断优先级
#define portDISABLE_INTERRUPTS()    vPortRaiseBASEPRI()
#define portENABLE_INTERRUPTS()     vPortSetBASEPRI( 0 )

portDISABLE_INTERRUPTS(); 将优先级小于configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY的中断屏蔽,即中断优先级为5-15的中断全部屏蔽。0-4的中断无法屏蔽。
portENABLE_INTERRUPTS() ;将全部中断打开。

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

 特别注意:IRQ 任务和高优先级任务必须设置为阻塞式(调用消息等待或者延迟等函数即可),只有这样,高优先级任务才会释放 CPU 的使用权,,从而低优先级任务才有机会得到执行。

时间片任务

#define configUSE_PREEMPTION      1    //1使用抢占式内核,0使用协程
#define configUSE_TIME_SLICING    1    //1使能时间片调度(默认式使能的)

同等优先级任务来说, 每个任务允许运行一个时间片.这个任务消耗完一个时间片,
那么CPU的使用权,将会移交给同等优先级下的另一个任务.使用,如此反复, 直到次优先级完全对CPU使用权进行释放.

#define configTICK_RATE_HZ       (1000)      //时钟节拍频率,这里设置为1000,周期就是1ms

这里设置为1ms则表示单个任务的时间片为1ms,运行完1ms后强制切换到下一个任务,以此循环。


http://www.ppmy.cn/news/439767.html

相关文章

王者荣耀高清壁纸脚本Python文件

网上查的不能运行,自己修改后,顺利执行,获取王者荣耀的所有高清壁纸,如果不能运行,请评论或者私信给我,配环境是个麻烦事,建议Python3.0以上执行,很爽! ""&qu…

代码随想录二刷day25 | 回溯 之 216.组合总和III 17.电话号码的字母组合

216.组合总和III 题目链接 解题思路: 选取过程如图: 图中,可以看出,只有最后取到集合(1,3)和为4 符合条件。 递归三部曲 确定递归函数参数 和77. 组合 一样,依然需要一维数组path…

感受龙芯电脑

前天去办公室,忽然发现门口居然摆着一台电子书大小的龙芯笔记本,旁边的小条写着:请你体验龙芯电脑。惊讶之余,迫不及待地上前试用起来。白色外观,小巧轻薄,感觉不超过12寸。再看操作界面,跟XP已…

龙芯(Loongarch64),在Linux虚拟一个龙芯OS体验下

前言 想体验下龙芯OS,但是又没有龙芯开发板或者龙芯实体机。手头上只有一个X64环境的Linux发行版,应该怎么做呢? 概括 其实非常简单,可以通过Chroot命令和Qemu在X64的指令集系统上模拟龙芯OS,然后虚拟出一个龙芯的系统…

龙芯芯片CPU的产品路线说明

龙芯系列处理器芯片是龙芯中科技术有限公司研发的具有自主知识产权的处理器芯片,产品以32位和64位单核及多核CPU/SOC为主,主要面向国家安全、高端嵌入式、个人电脑、服务器和高性能机等应用。产品线包括龙芯1号小CPU、龙芯2号中CPU 和龙芯3 号大CPU三个系…

1998元龙芯学生笔记本将投产(组图)

图1:图示龙芯笔记本机型外观靓丽,对边角做了圆滑处理以防止划伤磕碰,定位小学生。(国芯科技图片) 图2:图示龙芯笔记本机型外观稳重,更适合中学生使用。(国芯科技图片)     新浪科技讯 10月10日消息,四川…

4.龙芯2k1000 系统制作及安装

4.龙芯2k1000 系统制作及安装 文章目录 4.龙芯2k1000 系统制作及安装(一)、制作系统启动U盘(二)、操作系统拷贝 准备材料: 系统内核文件vmlinuzbuildroot根文件系统U盘ls2k1000主板 前言:如果你的主板有单…

龙芯 mysql_龙芯是什么架构

龙芯是MIPS架构。龙芯指令系统LoongISA在MIPS64架构500多条指令基础上,在基础指令、虚拟机指令、面向X86和ARM的二进制翻译指令、向量指令四个方面增加了近1400条新指令。 本教程操作环境:windows7系统、Dell G3电脑。 龙芯是MIPS架构。 龙芯是中国科学院…