OpenEdv-开源电子网

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

咨询下freertos us延时的问题。

[复制链接]

95

主题

174

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2015-9-22
在线时间
104 小时
发表于 2018-1-30 14:33:53 | 显示全部楼层 |阅读模式
1金钱
战舰freertos例子:
void delay_us(u32 nus)
{  
u32 ticks;
u32 told,tnow,tcnt=0;
u32 reload=SysTick->LOAD;    //LOAD的值      
ticks=nus*fac_us;       //需要的节拍数
told=SysTick->VAL;            //刚进入时的计数器值
while(1)
{
  tnow=SysTick->VAL;
  if(tnow!=told)
  {     
   if(tnow<told)tcnt+=told-tnow; //这里注意一下SYSTICK是一个递减的计数器就可以了.
   else tcnt+=reload-tnow+told;     
   told=tnow;
   if(tcnt>=ticks)break;   //时间超过/等于要延迟的时间,则退出.
  }  
};              
}

这里怎么没有对OS打断延时做保护处理?

最佳答案

查看完整内容[请看2#楼]

进入这个函数的前提,一般都是禁止中断的。所以无需再多此一举。 如果不加,中断肯定是可以打断的,所以这个要自己把握好问题点。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-1-30 14:33:54 | 显示全部楼层
进入这个函数的前提,一般都是禁止中断的。所以无需再多此一举。
如果不加,中断肯定是可以打断的,所以这个要自己把握好问题点。
回复

使用道具 举报

95

主题

174

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2015-9-22
在线时间
104 小时
 楼主| 发表于 2018-1-30 17:27:45 | 显示全部楼层
有没有人知道的指导下
回复

使用道具 举报

95

主题

174

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2015-9-22
在线时间
104 小时
 楼主| 发表于 2018-2-27 21:31:22 | 显示全部楼层
正点原子 发表于 2018-1-30 14:33
进入这个函数的前提,一般都是禁止中断的。所以无需再多此一举。
如果不加,中断肯定是可以打断的,所以这 ...

谢谢回复
回复

使用道具 举报

0

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2013-5-15
在线时间
25 小时
发表于 2018-6-6 10:36:46 | 显示全部楼层
us的延时 能到1us吗? systick 一般不都是设置1Ms的吗? 如果systick 设置为1ms,那如何实现us级的延时呢?
11
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-30 13:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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