ucos ii中,建立两个任务,一个任务用于从端口读数据并且计算出速率误码率。另一个任务负责显示。
第一个任务不断的从端口进行读数据,第二个只用于显示。我在第一个任务里调用了用延时函数想任务切换到第二个任务中,为什么不进行任务切换啊??难道是第一个在不断的读数据相当于不...
第一个任务不断的从端口进行读数据,第二个只用于显示。我在第一个任务里调用了用延时函数想任务切换到第二个任务中,为什么不进行任务切换啊??难道是第一个在不断的读数据相当于不断的中断,不能进行任务切换????求大神指导
展开
2个回答
展开全部
是这样的,如果你只建立了两个用户任务,并且,在第一个任务中正确调用了 OSTimeDly()
或者OSTimeDlyHMSM(),就一定会进行任务切换的。
你要注意OSTimeDlyHMSM()的参数,如果参数有问题,是不会延时的。
所以说,如果你正确应用了延时,是不会有问题的,你应该检查一下系统的配置是不是有问题。
主要是下面两个宏的配置正确与否
#define OS_MAX_TASKS 4
#define OS_LOWEST_PRIO 8
或者OSTimeDlyHMSM(),就一定会进行任务切换的。
你要注意OSTimeDlyHMSM()的参数,如果参数有问题,是不会延时的。
所以说,如果你正确应用了延时,是不会有问题的,你应该检查一下系统的配置是不是有问题。
主要是下面两个宏的配置正确与否
#define OS_MAX_TASKS 4
#define OS_LOWEST_PRIO 8
更多追问追答
追问
我现在加上任务切换了。但是计算数据的那个任务为啥只执行了一次???
我发送端是一秒发送信号一秒接受信号。。接受端也是一秒发送一秒接受。难道是因为接收端端口接受数据的时候不断的产生中断的问题??我感觉不应该啊,因为只有一秒接受数据,另外一秒钟是空闲的啊。所以在这一秒钟可以进行任务切换啊、、。
追答
我不是很明白你的意思,你的任务一是接收数据用的,接收数据还要产生中断吗?
如果你是要用中断的话,你完全可以在中断中给任务一发信号量,通知任务一进行数据处理,而没有必要在任务一里接收数据还要产生中断 ,你最好把问题详细描绘清楚。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询