完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
原子UCOSIII例程,例10-2 UCOSIII使用信号量访问共享资源区中,task1串口输出“任务1”之后,有成功请求到信号量,将“First task Running”拷贝到共享内存中,之后通过延时delay_ms切换到task2。那么问题来了,我认为程序进入task2之后应该从头开始先串口输出“任务2”,填充区域颜色之后再请求信号量,发现没有请求到,再切换回任务1,任务1再输出“First task Running”给串口啊。那为什么串口助手的运行结果是
任务1 First task Running 任务2 Second task Running 而不是我刚才分析的结果,串口助手输出如下: 任务1 任务2 First task Running Second task Running 为什么我的分析是错误的,感谢各位大神。 |
|
相关推荐
8个回答
|
|
这个东西比较绕,从任务的第一次运行开始分析吧
|
|
|
|
嗯,下载后的结果为第一个结果。我想问的是为什么不是我分析的第二个结果,非常感谢
|
|
|
|
这个东西比较绕,从第一次进入任务开始分析吧,这个麻烦一句一句的给你讲。
|
|
|
|
只能提醒你注意一下task1和task2中的OSTimeDlyHMSM()这个延时函数
|
|
|
|
非常感谢。我就是这里不懂,第一次运行到task1的delay_ms函数时,不是会先切换到task2吗。所以说,不是应该输出“任务2”字符了吗,那这里为什么没有输出,谢谢谢谢
|
|
|
|
我遇到和你一样的问题,楼主。我仿真出来的结果就是你说的
任务1: 任务2: First task Runnig Second task Running 但是从第二次输出开始就按照正常的开始输出了。我不知道为什么!我单步执行的话,发现在第一次执行task1任务的时候delay_ms(300)这个函数会进行任务切换,切换一次之后delay函数就不进行切换了。这就是我不明白的地方了。为什么第二次就不进行任务切换了?原子哥及各位高手请回答! |
|
|
|
我也遇到同样的疑问,求大神教。
|
|
|
|
用延时函数进行任务切换并不只是单纯的切换,还要考虑延时的时间,你们把任务一的delay_ms(300)改为delay_ms(350)自然得到你们预料的结果。如果是delay_ms(300)或是低一点自然是原子哥说的那个结果。你们可以改改试试。:
|
|
|
|
只有小组成员才能发言,加入小组>>
793 浏览 0 评论
1152 浏览 1 评论
2528 浏览 5 评论
2861 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2711 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1071浏览 3评论
194浏览 2评论
456浏览 2评论
369浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
454浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 22:07 , Processed in 0.758823 second(s), Total 89, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号