任务如下:
sta
tic void Task_abc(void *pdata)
{
pdata = pdata;
while (1)
{
led();
OSTimeDlyHMSM(0, 0, 0, 1);
}
}
u8 led(void)
{
控制数码管1;
计数并判断小于25时亮,25-50灭并重新计数。实现数码管亮500ms,灭500ms。
delay_ms(1);
控制数码管2;
delay_ms(1);
控制数码管3;
delay_ms(1);
........
共延时19ms;
return 0;
}
#define OS_TICKS_PER_SEC 1000u
任务优先级最高。
问题是:
led函数使用OSTimeDlyHMSM(0, 0, 0, 1)延时,正常亮灭各500ms。
使用delay_ms(1)延时时,计数250左右,才能实现亮灭各500ms。
为什么呢?
间隔20ms动态点亮数码管时,盯着数码管看不到闪烁,看旁边时,眼角能看到数码管闪烁。
想用delay_us减小这个时间,但是使用这两个函数时,为什么实际时间和理论对不上呢?
这两个延时不进行任务调度。跟这个有关系吗?