原创 不浪费时间,从不浪费Delay开始。。。

2015-5-4 09:36 1958 19 27 分类: MCU/ 嵌入式

Delay的变通,不要浪费Delay

前两天在做一个项目,说白了程序很简单,控制一大堆电磁阀,和上位机通信。根据上位机的命令控制不同的电磁阀动作。其中在某些电磁阀的控制流程中有很多地方需要长时间延时。最长的时候多达30m。另外一点比较特殊的地方就是需要实时响应上位机发送的报警命令,控制一路报警灯触发报警。因为前期规划没有使用操作系统,也就纯单片机底层程序。这就会有点矛盾,要Delay则无法实时响应报警,想实时显示报警则传统的延时程序无法使用。

在这里,经过试验,我借鉴了操作系统的TASK调用方式。即占用一个硬件定时器,做系统节拍。通过一个整体变量对其进行赋值和清零。通过这个系统节拍编写一个硬件延时程序,程序里包含时钟节拍的判断,需要延时的时间输入,以及报警判断。因为报警其实是串口中断,在延时程序里只需判断buf里的数据,故实际占用时间很少。由此就实现了即可输入制定延时时间同时还可以响应报警的前后台程序。

其核心跟UCos的程序轮转类似,相当于两个TASK在轮换执行,一个为响应上位机动作,一个为响应上位机报警。通过延时程序来进行切换。

写了这么一堆,其实也没什么意思,就是一点小花招,有需要的可以借鉴,觉得土的也可以吐槽。

不浪费时间,从不浪费Delay开始。。。

文章评论8条评论)

登录后参与讨论

用户377235 2016-3-11 13:19

用时间任务队列方式更好些吧

用户443155 2016-3-4 08:22

定时器,中断!学单片机的时候,老师延时也习惯用delay,然后说到企业里会更多的用定时中断来。结果,工作几年,发现周边的同事还是喜欢delay,轮询扫描,各种定时器中断、IO中断都不喜欢用,让我很鄙视。

用户402594 2015-12-28 08:59

这不就是时分法多任务处理吗,也就状态机,STM32可以用systick做延迟

用户1851539 2015-11-4 23:03

用定时期那,有中断,将报警信号作为中断可以吗、、、、。

用户1694422 2015-8-21 17:01

题主已经点明,嫌定时查询过于浪费时间,所以长时间延时放中断处理程序里,程序会跑飞的。现有的机制是比较事宜的。

用户455798 2015-7-16 16:57

好像用定时器中断就可以解决,延时不占用CPU时间。

hzddyx_297768481 2015-5-5 17:00

赞一个!

自做自受 2015-5-5 11:06

支持!不浪费!从点滴做起。
相关推荐阅读
用户1610024 2016-03-14 12:00
三十而立,却如浮萍
三十而立,却如浮萍     眼瞅着见天就三十了。却不知道如何才算是而立。今天讲讲工作上的感受。     男人么,没有事业何谈人生。事业却总是在和你捉迷藏。往往你想要的都不是你需要的,你需要...
用户1610024 2016-01-28 10:32
靠得越近,越容易受伤
靠的越近,越容易受伤 两个旋转飞快的齿轮,各自欢快的运转。某种机缘,凑在了一起,开始咬合,共同合力。 一开始,齿轮都有毛刺,在一起并不愉快,时常会有摩擦,久而久之,毛刺磨平了,两枚齿轮合力...
用户1610024 2015-07-02 09:07
第三个十字路口,继续前行
第三个十字路口,继续前行 正在经历人生的第三次找工作。第一次大学毕业;第二次上次跳槽找。目前的第三次,也是最重要的一次。 人生已经接近中年,也找到了自己的另一半。虽然总会留有些遗憾,但前三...
用户1610024 2015-06-16 15:21
等待的时间最是煎熬
又到了一个十字路口,做了应该做的事情,剩下的就是等待结果。一天两天,耐心有限,不如给个痛快。钝刀子割肉最痛。能够达成自然做好,不能达成也尽快让我结束现在的状态。...
用户1610024 2015-05-04 10:08
结婚是童话的结束,但却是另一段人生的开始
    结婚是童话的结束,但却是另一段人生的开始 印象中童话故事的结尾总是:王子和公主举行 了盛大的婚礼,从此幸福的生活在一起。 借用一句广告词:结束?你只是刚上路而已。 。...
我要评论
8
19
关闭 站长推荐上一条 /2 下一条