打印

一种被妖魔化的延时程序的写法

[复制链接]
楼主: zcw9911
手机看帖
扫描二维码
随时随地手机跟帖
21
szxy06dq| | 2012-9-10 11:01 | 只看该作者 回帖奖励 |倒序浏览
上位机死等会影响用户体验
我做底层也有死等的,一个可能是规划有问题,另外就是“确实没必要”

使用特权

评论回复
22
江枫渔火| | 2012-9-10 11:05 | 只看该作者
反正现在基本所有的教程教科书所演示和教导的,都是清一色的循环延时,但是后来我读过几篇**之后才有所感悟,并不是循环延时不好,而是觉得用好定时器,用好状态机,才能挖掘出单片机的潜力。就是在任务比较多延时比较长的情况下,用循环延时是不科学的。
有时候,你不得不承认,一个复杂的系统,前后台模式,多种任务,竟然没有使用标志时间,都采用循环延时,这才是一项更具有技巧性的活~而我反而觉得这样的系统架构不容易控制,扩展性,维护性都会很差~
不过我阅历尚浅,还没有看到有这样的系统~
引用某君的一句话,"别让CPU空转"~
我认识到这一点的时候才有恍然大悟的感觉,书本上的实例与真实的产品项目的区别有时就体现在这上面。

使用特权

评论回复
23
yewuyi| | 2012-9-10 12:22 | 只看该作者
不谈结果是否有用,但至少那些论据是没啥用的。

使用特权

评论回复
24
cool_coder| | 2012-9-10 13:07 | 只看该作者
系统的可靠性本来就是随着复杂度升高而降低的。避繁就简只是一个原则,如何使用就见仁见智了。如果某种简化会带来负面影响,尤其要仔细权衡。总之,把简单系统做得可靠并不难,难的是系统复杂度提高后同样可靠。

使用特权

评论回复
25
qq65411253| | 2012-9-10 13:09 | 只看该作者
死等的方法也不是不能用,只是应用范围比较窄,不适合比较大的任务。

使用特权

评论回复
26
李富贵| | 2012-9-10 15:15 | 只看该作者
上了RTOS以后再也没有这样的烦恼了。
OSTimeDly是把CPU控制权交还给RTOS的意思,这样的延迟随便用,时间到了CPU把控制权还给任务,中间别的任务有事可以正常执行。赶脚用了RTOS,整体编程的思路完全上了一个档次。

使用特权

评论回复
27
NE5532| | 2012-9-10 15:37 | 只看该作者
我觉得会根据需要选择方案的,最档次。

使用特权

评论回复
28
zcw9911|  楼主 | 2012-9-10 15:49 | 只看该作者
用了一个RTOS就上档次了?很多低成本单片机无法运行RTOS,怎么办?很多重要的场合,RTOS程序不符合要求怎么办?用不用RTOS和编程思路层次还真的没有关系

使用特权

评论回复
29
zcw9911|  楼主 | 2012-9-10 15:55 | 只看该作者
很多关键的控制设备,标准C都不允许使用,只能使用符合行业规定的C语言子集,RTOS根本无法使用,层次的高低不是只看程序写的是否漂亮,更重要的是一整套产品设计开发的规范和流程。

使用特权

评论回复
30
李富贵| | 2012-9-10 16:16 | 只看该作者
我真是服了你这只井底之蛙了,火星探测器比你见过的那些“关键的控制设备”关键多了,不一样用VxWorks?汽车上的控制器都是人命关天的关键设备,不也是必须使用QNX这样的RTOS?不符合要求,你的要求本身就是陈词滥调,RTOS是提高系统可靠性的关键工具,不是只会前后台的该进棺材板的“老工程师”们能理解的。

使用特权

评论回复
31
NE5532| | 2012-9-10 16:18 | 只看该作者
本帖最后由 NE5532 于 2012-9-10 16:24 编辑

学会根据需要选择方案,才是工程师,否则只是Coder。另外OS也是从裸奔发展而来的,不要理解为老工程师不接受OS。

使用特权

评论回复
32
zcw9911|  楼主 | 2012-9-10 17:04 | 只看该作者
井底之蛙?我们单位硬件部门做单做EMC分析的就好几个,负责产品软件验证检验的几十人,一块IO控制板卡却跑非要跑一个系统,我们单位也在用vxworkx,我们板卡产品软件要符合misra-c标准,你说说前几年那个系统符合这个标准

使用特权

评论回复
33
李富贵| | 2012-9-10 17:06 | 只看该作者
一个破io控制板卡的那点玩意儿也拿出来说事儿?

使用特权

评论回复
34
kseeker| | 2012-9-10 17:11 | 只看该作者
这李富贵真跟自己头像一个样子啊。

使用特权

评论回复
35
李富贵| | 2012-9-10 17:16 | 只看该作者
我的头像说的就是你们这群井底之蛙。
You can't teach old dog new tricks.

使用特权

评论回复
36
ayb_ice| | 2012-9-10 17:27 | 只看该作者
20# joyme
不用定时器(指类似定时器的功能)就能把程序搞定的人绝对高手(太简单的不算)

使用特权

评论回复
37
江枫渔火| | 2012-9-10 17:34 | 只看该作者
RTOS里的延时大概是基于“嘀嗒”定时器,并不是用干巴巴的循环语句来延时。所以复杂多任务的系统基本都是用硬件定时器来完成延时等待的工作的~
RTOS是好~但也不是万金油~能解决问题就够了~不一定非整个系统进去~

使用特权

评论回复
38
渤海三叠浪| | 2012-9-11 20:43 | 只看该作者
水平一般不容易体现啊   高安全性的场合才有可能体现水平  关键是得给机会啊  否则有才也白搭

楼主你说的也对  但是肯定不全对。
说不准以后我写程序一点不用死延时呢

但是现在懒得改罢了

说不准 ‘

使用特权

评论回复
39
渤海三叠浪| | 2012-9-11 20:44 | 只看该作者
一个破io控制板卡的那点玩意儿也拿出来说事儿?
李富贵 发表于 2012-9-10 17:06

说得好     有气魄

使用特权

评论回复
40
渤海三叠浪| | 2012-9-11 20:44 | 只看该作者
我的头像说的就是你们这群井底之蛙。
You can't teach old dog new tricks.
李富贵 发表于 2012-9-10 17:16

说得好  有性格一般都是高人!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则