在ucos中,每个任务都是死循环。如很进行任务的切换?
2个回答
展开全部
用信号量、消息队列等,来控制任务,实现任务切换
建议买一本ucos的书,系统性的学一学
建议买一本ucos的书,系统性的学一学
更多追问追答
追问
我买了一本,嵌入式实时操作系统uc/os 原作者写的,邵贝贝等翻译的。越看越是一头雾水。任务到底是如何切换的没有弄明白。在看到时间管理这个章节,当任务延时的时候被挂起(调用OSTimeDly函数),可以切换到下一个任务。我想请教下,uc/os的多任务调度,切换,实际上就是任务自己本身通过某种方式使自己停下来(例如上面说的时间延时,你所说的信号量、队列等等),让其他任务执行,可以这样理解么?
追答
可以打开书,看看源码
你会发现,在OSTimeDly(), OSSemPost等函数的源码
不难发现,源码中,就调用了“调度函数”
调度函数中,ucos系统内核检查将处于就绪态的任务,比较优先级,然后运行优先级最高的那个
所以,任务切换,实际上相当于是在任务内,调用任务切换函数,来实现任务切换的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询