osStatus osDelayUntil (uint32_t PreviousWakeTime, uint32_t millisec)
{
#if INCLUDE_vTaskDelayUntil
TickType_t ticks = (millisec / portTICK_PERIOD_MS);
TickType_t previouswake = (TickType_t) PreviousWakeTime;
vTaskDelayUntil(&previouswake, ticks ? ticks : 1);
return osOK;
#else
(void) millisec;
(void) PreviousWakeTime;
return osErrorResource;
#endif
}
该函数的TickType_t previouswake = (TickType_t) PreviousWakeTime; 有问题
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
没有问题,你不要看局部。正确的用法如下:
uint32_t xLastWakeTime;
xLastWakeTime=osKernelSysTick();//初始化xLastWakeTime为当前滴答数
注意第一次使用的时候 要获取当前时间
之后这个值会变 会一直保存在这个变量里,我们只要保证这个变量一直有自己的空间即是个全局变量,那么只要第一次运行,获取滴答数即可
...
osDelayUntil(xLastWakeTime,100);//延时100ms
...
osDelayUntil(xLastWakeTime,1);//延时1ms
...
你要先看看FreeRtos里vTaskDelayUntil这个函数怎么用,然后你再看看再cmsis rtos里是怎么封装这些函数的,你就明白了
不管怎么用,初始滴答值总是要先提取一下的
一周热门 更多>