FREE RTOS到底用抢占还是协程?为什么delay_ms延时严重不准呢

2019-12-12 18:10发布




两个问题:

1、用哪种模式好?

2、延时遇到问题,两种都试了下没用,



延时用的。无论写的delay_ms(3000)还是6000,延时最大只有1.2S,不科学呢,按道理只会拖后呀



//延时 nms,会引起任务调度
//nms:要延时的 ms 数
//nms:0~65535
void delay_ms(u32 nms)
{
  if(xTaskGetSchedulerState()!=taskSCHEDULER_NOT_STARTED)//系统已经运行
  {
   if(nms>=fac_ms) //延时的时间大于 OS 的最少时间周期
   {
     vTaskDelay(nms/fac_ms);  //FreeRTOS 延时
   }
   nms%=fac_ms;  //OS 已经无法提供这么小的延时了,
   //采用普通方式延时
  }
  delay_us((u32)(nms*1000)); //普通方式延时
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。