当前位置: 首页 > news >正文

周至做网站的公司郑州手机网站搭建

周至做网站的公司,郑州手机网站搭建,wordpress展开,动漫设计招聘信息相信许多朋友都有过这么一个需求:固定一个时间(周期)去处理某一件事情。 比如:固定间隔10ms去采集传感器的数据,然后通过一种算法计算出一个结果,最后通过指令发送出去。 你会通过什么方式解决呢&#xf…

相信许多朋友都有过这么一个需求:固定一个时间(周期)去处理某一件事情。

比如:固定间隔10ms去采集传感器的数据,然后通过一种算法计算出一个结果,最后通过指令发送出去。

你会通过什么方式解决呢?

1解决办法

很多人肯定首先想到的是:利用定时器,定时10ms中断,在中断里面处理

这种利用定时器中断解决的办法,在处理程序耗时很短(微秒级以下)的情况下是可以的。但是,如果处理程序耗时较长(毫秒级),显然在中断里面处理不现实。

因此,就引出了今天的绝对延时。在实时操作系统FreeRTOS任务中,利用vTaskDelayUntil绝对延时即可完美解决这个问题。

2相对延时和绝对延时的含义

本文拿FreeRTOS中相对延时vTaskDelay函数,绝对延时vTaskDelayUntil函数来说明。

相对延时:指每次延时都是从执行函数vTaskDelay()开始,直到延时指定的时间(参数:滴答值)结束。

绝对延时:指每隔指定的时间(参数:滴答值),执行一次调用vTaskDelayUntil()函数的任务。

文字描述可能不够直观理解,下面章节结合代码例子、延时值(IO高低变化波形)、任务执行图来详细讲述一下他们的区别。

3相对延时和绝对延时区别

以实际代码为例说明:一个任务中,添加一个10ms系统延时,然后,在执行任务(耗时1ms左右,例子以延时代替)。

相对延时代码:

绝对延时代码:

提示:

1.TestDelay这个延时函数仅仅用于测试(延时1ms),用于代替采集、算法、发送等耗时时间。

2.两个代码唯一区别在于系统延时不同,一个vTaskDelay(10);,一个vTaskDelayUntil(&xLastWakeTime, 10);

3.系统时钟频率为1000,也就是上面系统延时10个滴答,即10ms。

看到代码,你想到了他们输出结果的差异了吗?

来看下结果的差异:用PA0这个引脚输出的高低电平,得出延时时间。

相对延时结果:

绝对延时结果:

相对延时周期:系统延时10ms + 执行任务1ms的时间,总共11ms时间。

绝对延时周期:即为10ms时间。

4换一种方式看区别

如果上面的区别还没明白,再来讲一个更容易理解的区别,通过文字 + 任务执行图来说明。

1.相对延时

先看任务执行图,按照上面代码的方式呈现:

这里会牵涉到操作系统任务切换、高优先级任务抢占等一些原理,若不了解,请转移直到了解再回来。

上电,TEST任务进入延时(阻塞)状态,此时系统执行其他就绪任务。FreeRTOS内核会周期性的检查TEST任务的阻塞是否达到,如果阻塞时间达到,则将TEST任务设置为就绪状态,如果就绪任务中TEST任务的优先级最高,则会抢占CPU,再次执行任务主体代码,不断循环。

TEST任务每次系统延时都是从调用延时函数vTaskDelay()开始算起的,所以叫相对延时。

从上图可以看出:

如果执行TEST任务的过程中发生中断,或者具有更高优先级的任务抢占了,那么TEST任务执行的周期就会变长,所以使用相对延时函数vTaskDelay(),不能周期性的执行TEST任务。

2.绝对延时

代码中定义的变量xLastWakeTime,其实是用来保存上一次的系统计数器值(方便检测下一个延时时间是否到来)。

和上面相对延时程序执行图比较,可以看出,系统延时的时间包含了程序执行的时间。即时中途有中断,或更高优先级任务打断,不会影响下一次执行的时间(也就是这个周期不会变,当然,打断时间不能超过系统延时值)。

提示:图片中添加了一段话:一般来说,程序执行时间要小于总间隔时间(10ms)。

如果打断时间太长,回来之后延时都超过了,则会立马执行程序,不会再延时(任务不会再阻塞延时)。

理解了吗?

------------ END ------------

http://www.yayakq.cn/news/751698/

相关文章:

  • 网站系统问题解决措施银川专业做网站
  • 网站建设价格很 好乐云seo做视频网站玩什么配置
  • 机械模板网站用cms做网站的具体步骤
  • 中企动力网站建设公司wordpress 订阅到
  • fla可以做网站么网站建设者
  • 织梦模板添加网站地图龙华民治网站设计公司
  • 做网站美工的理由北京网站制作公司
  • 呼和浩特做网站的公司中国做铁塔的公司网站
  • 自己做的网站如何推广学会网站建设能成为一项职业吗
  • 服务器放网站吗高校保卫处网站建设工作
  • 贵阳做网站公司吗网页链接的视频怎么下载
  • 艺美网站建设做书店网站版头
  • 重庆市建设工程施工安全管理总站自己做片头的网站
  • 30几岁的人想学做网站网站内容更新教程
  • 宝安网站制作公司wordpress做幻灯片
  • 临沂seo网站管理容桂网站制作动态
  • 怎么提高网站访问速度泉州网站建设公司首选公司哪家好
  • 郑州 (网站建设现在出入山西最新规定
  • 加强网站的建设工作网站如何做品牌营销
  • 虚拟机中建设iis网站做网站用什么软件方便
  • 域名买了之后如何建设网站郑州制作网站软件
  • 做尽调需要用到的网站具体的网站建设
  • 中山免费建网站vue做社区网站
  • 校园社交网站开发宝安区网站建设培训
  • 建设部网站投标保证金wordpress文章字体修改为宋体
  • 企业电子商务网站有哪些功能苏州网站设计选哪家
  • 网站备案个人好还是企业好wordpress 加斜杠
  • 南沙区交通和建设局网站网站建设应考虑哪些方面的问题
  • 网站建设gzdlzgg网站建设维护成本
  • 网站制作北京山东建站商城