[应用相关] FreeRTOS系列

[复制链接]
 楼主| goodluck09876 发表于 2018-10-4 17:08 | 显示全部楼层 |阅读模式
一、抢占式调度
还是先来看看osThreadDef的定义:
495425bb5d8a4b6819.png



 楼主| goodluck09876 发表于 2018-10-4 17:10 | 显示全部楼层
os_thread_def_##name 是声明了一个变量,#name是把这么宏参数变为字符串,用作任务的名称!

第二个参数 thread 就是任务的具体函数了
 楼主| goodluck09876 发表于 2018-10-4 17:11 | 显示全部楼层
第三个参数 priority 看注释知道是任务的优先级,通过默认函数的第三个参数 osPriorityNormal,跳转到定义:

758935bb5d9260c05f.png
 楼主| goodluck09876 发表于 2018-10-4 17:15 | 显示全部楼层
osPriorityNormal 实际上就是0,看注释也可以知道,数值越大,优先级也越高(如果不知道优先级是什么东西,那就先去看看优先级吧),注意了FreeRTOS中,数值越大,优先级也越高,FreeRTOS总是运行优先级最高的任务(抢占式)优先级的设定就相当于普通会员和VIP会员,不用想都知道是先服务VIP会员再服务普通会员,可以猜想一下,如果任务1的优先级比任务2的高,是不是说任务1就会比任务2先执行呢?把任务1弄成VIP会员,来实验一下就知道了
948405bb5da16060e4.png
 楼主| goodluck09876 发表于 2018-10-4 17:17 | 显示全部楼层
 楼主| goodluck09876 发表于 2018-10-4 17:17 | 显示全部楼层
结果显示,任务1真的出来了,果然会员是很有用的,但是任务2却不见了,这又是为何
 楼主| goodluck09876 发表于 2018-10-4 17:17 | 显示全部楼层
嵌入式操作系统中,每一个任务都是有状态的,FreeRTOS 的运行支持以下四种状态Running—运行态Ready—就绪态Blocked—阻塞态Suspended—挂起态运行态就是说任务现在正在运行,就绪态是指任务可以运行了,但是还没开始运行,就比如在银行排队取钱一样,你已经准备好取钱了,但是前面有人也在取钱,你得排队!那么有没有不排队的方法?有,VIP会员!哈哈!后面再说!就绪态就是再排队取钱的人,运行态就是正在取钱的人,代码里的 printf("StartDefaultTask1 \r\n"); 就是取钱的这个动作!而柜台妹妹,就相当于是内核/调度器!
339845bb5dac4be727.png
 楼主| goodluck09876 发表于 2018-10-4 17:18 | 显示全部楼层
任务1由于是一个死循环,就相当于是一直都在取钱,一直霸占着柜台妹妹,那么柜台妹妹就永远都服务不到后面的人了!所以任务2就打印不出来了,怎么解救柜台妹妹,让她服务我们呢?有几种方法,我们先说高尚一点的做法,任务1主动让出:

411775bb5dae197690.png
 楼主| goodluck09876 发表于 2018-10-4 17:19 | 显示全部楼层
任务2也是个死循环

39965bb5db0925a93.png
 楼主| goodluck09876 发表于 2018-10-4 17:20 | 显示全部楼层
这下1和2都出来了

285225bb5db17f1d0e.png
 楼主| goodluck09876 发表于 2018-10-4 17:20 | 显示全部楼层
时间片调度

913005bb5db6c7bb57.png
 楼主| goodluck09876 发表于 2018-10-4 17:21 | 显示全部楼层
 楼主| goodluck09876 发表于 2018-10-4 17:21 | 显示全部楼层
时钟频率改为100HZ,这样,时间片就会变成10ms一个时间片:

177485bb5db8e1f953.png

 楼主| goodluck09876 发表于 2018-10-4 17:21 | 显示全部楼层
 楼主| goodluck09876 发表于 2018-10-4 17:21 | 显示全部楼层
把m_delay改成osDelay()看看效果,Task1 和Task2,几乎是同时输出的(目前市面上的串口调试工具可能看不到这样的结果)
还可以把时间片修改为其它值,看看效果
wowu 发表于 2018-10-8 16:34 | 显示全部楼层
非常感谢楼主分享
木木guainv 发表于 2018-10-8 17:21 | 显示全部楼层
非常感谢楼主分享
wowu 发表于 2018-10-9 13:03 | 显示全部楼层
爱看详解函数的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

220

主题

5843

帖子

25

粉丝
快速回复 在线客服 返回列表 返回顶部