打印
[应用相关]

FreeRTOS系列

[复制链接]
1244|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一、抢占式调度
还是先来看看osThreadDef的定义:




沙发
goodluck09876|  楼主 | 2018-10-4 17:10 | 只看该作者
os_thread_def_##name 是声明了一个变量,#name是把这么宏参数变为字符串,用作任务的名称!

第二个参数 thread 就是任务的具体函数了

使用特权

评论回复
板凳
goodluck09876|  楼主 | 2018-10-4 17:11 | 只看该作者
第三个参数 priority 看注释知道是任务的优先级,通过默认函数的第三个参数 osPriorityNormal,跳转到定义:

使用特权

评论回复
地板
goodluck09876|  楼主 | 2018-10-4 17:15 | 只看该作者
osPriorityNormal 实际上就是0,看注释也可以知道,数值越大,优先级也越高(如果不知道优先级是什么东西,那就先去看看优先级吧),注意了FreeRTOS中,数值越大,优先级也越高,FreeRTOS总是运行优先级最高的任务(抢占式)优先级的设定就相当于普通会员和VIP会员,不用想都知道是先服务VIP会员再服务普通会员,可以猜想一下,如果任务1的优先级比任务2的高,是不是说任务1就会比任务2先执行呢?把任务1弄成VIP会员,来实验一下就知道了

使用特权

评论回复
5
goodluck09876|  楼主 | 2018-10-4 17:17 | 只看该作者

使用特权

评论回复
6
goodluck09876|  楼主 | 2018-10-4 17:17 | 只看该作者
结果显示,任务1真的出来了,果然会员是很有用的,但是任务2却不见了,这又是为何

使用特权

评论回复
7
goodluck09876|  楼主 | 2018-10-4 17:17 | 只看该作者
嵌入式操作系统中,每一个任务都是有状态的,FreeRTOS 的运行支持以下四种状态Running—运行态Ready—就绪态Blocked—阻塞态Suspended—挂起态运行态就是说任务现在正在运行,就绪态是指任务可以运行了,但是还没开始运行,就比如在银行排队取钱一样,你已经准备好取钱了,但是前面有人也在取钱,你得排队!那么有没有不排队的方法?有,VIP会员!哈哈!后面再说!就绪态就是再排队取钱的人,运行态就是正在取钱的人,代码里的 printf("StartDefaultTask1 \r\n"); 就是取钱的这个动作!而柜台妹妹,就相当于是内核/调度器!

使用特权

评论回复
8
goodluck09876|  楼主 | 2018-10-4 17:18 | 只看该作者
任务1由于是一个死循环,就相当于是一直都在取钱,一直霸占着柜台妹妹,那么柜台妹妹就永远都服务不到后面的人了!所以任务2就打印不出来了,怎么解救柜台妹妹,让她服务我们呢?有几种方法,我们先说高尚一点的做法,任务1主动让出:

使用特权

评论回复
9
goodluck09876|  楼主 | 2018-10-4 17:19 | 只看该作者
任务2也是个死循环

使用特权

评论回复
10
goodluck09876|  楼主 | 2018-10-4 17:20 | 只看该作者
这下1和2都出来了

使用特权

评论回复
11
goodluck09876|  楼主 | 2018-10-4 17:20 | 只看该作者
时间片调度

使用特权

评论回复
12
goodluck09876|  楼主 | 2018-10-4 17:21 | 只看该作者

使用特权

评论回复
13
goodluck09876|  楼主 | 2018-10-4 17:21 | 只看该作者
时钟频率改为100HZ,这样,时间片就会变成10ms一个时间片:



使用特权

评论回复
14
goodluck09876|  楼主 | 2018-10-4 17:21 | 只看该作者

使用特权

评论回复
15
goodluck09876|  楼主 | 2018-10-4 17:21 | 只看该作者
把m_delay改成osDelay()看看效果,Task1 和Task2,几乎是同时输出的(目前市面上的串口调试工具可能看不到这样的结果)
还可以把时间片修改为其它值,看看效果

使用特权

评论回复
16
wowu| | 2018-10-8 16:34 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
17
木木guainv| | 2018-10-8 17:21 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
18
wowu| | 2018-10-9 13:03 | 只看该作者
爱看详解函数的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

220

主题

5843

帖子

21

粉丝