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

2019-07-21 03:29发布


两个问题:
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)); //普通方式延时
}




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
aozima
1楼-- · 2019-07-21 08:36
有了RTOS还要用软延时的 delay_ms ?
l1234564555
2楼-- · 2019-07-21 09:14
 精彩回答 2  元偷偷看……
edmund1234
3楼-- · 2019-07-21 14:03
用系统的, 就要用糸统自带的vTaskDelay

一周热门 更多>