OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2110|回复: 3

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

[复制链接]

62

主题

275

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1155
金钱
1155
注册时间
2012-3-4
在线时间
80 小时
发表于 2019-4-4 15:58:18 | 显示全部楼层 |阅读模式
16金钱

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




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

11

主题

1044

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3722
金钱
3722
注册时间
2011-5-23
在线时间
2013 小时
发表于 2019-4-4 17:42:56 | 显示全部楼层
有了RTOS还要用软延时的 delay_ms ?
RT-Thread RTOS 音频,WIFI,蓝牙
回复

使用道具 举报

62

主题

275

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1155
金钱
1155
注册时间
2012-3-4
在线时间
80 小时
 楼主| 发表于 2019-4-4 20:37:14 | 显示全部楼层
aozima 发表于 2019-4-4 17:42
有了RTOS还要用软延时的 delay_ms ?

需要啊,任务没事干,就延时啊。。。时间是对的,是我看错了,抢占不会会 优先级高的运行的多呢?打扰了优先级低的,比如我串口中断接收GPS,任务里面解析,有时候就解析失败,数据不全
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2019-4-5 11:01:13 | 显示全部楼层
用系统的, 就要用糸统自带的vTaskDelay
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-23 06:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表