正看教程学到这一章,这样是否可以消除被任务抢占的影响呢?
[C] 纯文本查看 复制代码 static void AppTaskMsgPro(ULONG thread_input)
{
UINT Delay, NextTime;
const UINT Frequency = 200;
/* 获取 Frequency 个时钟节拍后的时间 */
NextTime = tx_time_get() + Frequency;
while (1)
{
/* 运行任务程序 */
bsp_LedToggle(3);
/* 计算与周期边界值的差 */
Delay = NextTime - tx_time_get();
/* 获取下一次周期的边界值 */
if(Delay > 100000) /* 若差值计算为负值,UINT类型的数值会是一个很大的正数 */
NextTime = tx_time_get()+Frequency;
else
NextTime += Frequency;
/* 延时到边界值 */
if (Delay <= Frequency)
{
tx_thread_sleep(Delay);
}
}
} |