OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4193|回复: 3

任哲书籍例5.1的一个例子,不明白,求指教

[复制链接]

29

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2018-8-3
在线时间
48 小时
发表于 2018-10-20 10:12:35 | 显示全部楼层 |阅读模式
1金钱
大概意思说的就是youTask 和 myTask 共享S数组,youTask输出“youTask”,myTask输出“myTask”实验结果如第三图所示,本来依据代码预期第三列应该输出youTask的,被高任务优先级的myTask设置了S字符串输出了myTask。
我现在在c户籍学习阶段,我理解的任务之间的切换必须要有任务调度才会执行的吧,在youTask的代码中并没有看到任务调度的影子呀,只有在最后才又一个OStimeDly,但是第三列输出的while代码在前面,感觉也不会影响的,我就觉得第三列还会输出youTask,不知道我哪里理解错误了呢》?求指教。




另外一个问题就是在youTask代码中的while循环,前面OStime被重新设置为0了,while的条件是OStime<500,500个时钟节拍,我觉得这里会有一段时间(500个时钟节拍的时间,应该也是很长时间了)执行while中的代码,应该会在第三列输出很多很多的youTask/myTask,毕竟代码执行速度不是us级别吗,时钟节拍是ms级别。而且在这500个时钟节拍内程序是不是都不会往下或者往别的任务进行调度。不懂,有大神请指点一下,谢谢。








下午有正点原子发布会,我要去学习学习,不知道能不能抽个奖品,哈哈。


qq.png
ww.png
ee.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

882

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3071
金钱
3071
注册时间
2018-2-7
在线时间
285 小时
发表于 2018-10-20 10:38:59 | 显示全部楼层
任务调度是系统自动切换的,调用延时程序会手动切换任务。
回复

使用道具 举报

29

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2018-8-3
在线时间
48 小时
 楼主| 发表于 2018-10-20 11:01:09 | 显示全部楼层
程序运行速度和时钟节拍有什么关系呢。学习单片机的时候一个语句执行速度在us级别,而操作系统的时钟节拍单位在ms级别,在每个时钟节拍中,单片机可以做很多事情吧?程序执行完OSTIMESET(0)马上就会执行while(OSTIME<500的程序了),给了操作系统调度的时间了吗?上次调度和下次调度时间间隔不是ms级别吗?
回复

使用道具 举报

29

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2018-8-3
在线时间
48 小时
 楼主| 发表于 2018-10-20 11:12:57 | 显示全部楼层
HXYDJ 发表于 2018-10-20 10:38
任务调度是系统自动切换的,调用延时程序会手动切换任务。

系统自动切换?是每个时钟节拍引起一次中断调度吧?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-2 08:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表