freertos之优先级实验

文章介绍了FreeRTOS中的任务优先级机制,通过实验展示了不同优先级任务的执行顺序和切换。实验1显示同优先级任务轮转,实验2到4则验证了优先级对任务执行的影响,以及任务创建和删除操作对任务调度的影响。
摘要由CSDN通过智能技术生成

优先级的介绍

优先级的取值范围是:0~(configMAX_PRIORITIES – 1),数值越大优先级越高。
FreeRTOS会确保最高优先级的、可运行的任务,马上就能执行。
对于相同优先级的、可运行的任务,轮流执行

任务的执行顺序

对于同优先级的任务,它们“轮流”执行。怎么轮流?你执行一会,我执行一会。
"一会"怎么定义?
人有心跳,心跳间隔基本恒定。
FreeRTOS中也有心跳,它使用定时器产生固定间隔的中断。这叫Tick、滴答,比如每10ms发生一次时钟中断。

如下图:
假设t1、t2、t3发生时钟中断。
两次中断之间的时间被称为时间片(time slice、tick period)。
时间片的长度由configTICK_RATE_HZ 决定,假设configTICK_RATE_HZ为100,那么时间片长度就是10ms。
在这里插入图片描述

实验1

创建个任务,且任务优先级相同。

在这里插入图片描述
在这里插入图片描述

每一个任务都打印串口,且当前执行那个任务,哪个任务的状态值就为1.
可以看到实验结果,因为3个任务的优先级都一样,所以三个任务按时间片轮流执行。

实验2

创建3个任务,其中一个任务优先级高于另外两个。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
可以看到只有任务3在执行。这是因为任务3的优先级高于另外两个任务。

实验3

创建三个任务优先级一样的任务,当任务2执行100次删除任务1,执行200次时删除任务2。

在这里插入图片描述
在这里插入图片描述
实验结果:当任务1和任务2删除后,只执行任务3
在这里插入图片描述

实验4

通过同一个任务函数创建两个不同的任务。

在这里插入图片描述在这里插入图片描述

看到实验结果:有两个任务在运行。
在这里插入图片描述

实验5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值