|
在ucosIII中使用了ucGUI的存储设备功能GUI_MEMDEV_DrawAuto()之后,uCOS的延时函数就相当不准确了,比如我想延时个10ms,结果延时的结果可能之后5ms,并且这个延时的时间值来回跳动不稳定。
代码如下
task1()
{
while(1)
{
P00_L;
OSTimeDlyHMSM(0, 0, 0, 10,OS_OPT_TIME_HMSM_STRICT,&err);
P00_H;
OSTimeDlyHMSM(0, 0, 0, 100,OS_OPT_TIME_HMSM_STRICT,&err);
}
}
static void _Draw()
{
//这个函数里只有一个画图函数
GUI_DrawBitmap(...);
}
task2()
{
while(1)
{
OSTimeDlyHMSM(0, 0, 0, 50,OS_OPT_TIME_HMSM_STRICT,&err);
GUI_MEMDEV_DrawAuto(&AutoDev, &Param.AutoDevInfo, _Draw, &Param);
}
}
如果只有任务1,则延时一切正常。如果开启了任务2,则任务1中的延时时间就在10ms附近来回跳动,如果延时时间比10ms大,我还能理解。但是延时时间少于10ms的,我理解不了。。。
|
|