wxj1952 发表于 2007-12-4 20:05

打擂的不多。

以往那么多吹牛的高手都不见了?<br />

dld2 发表于 2007-12-4 20:07

楼上,你不配

tage 发表于 2007-12-4 20:11

我是菜鸟,没上过os

是不是在执行那4个700ms的函数时,只记丢了几秒。

甄蔡组合 发表于 2007-12-4 20:19

什么叫OS !!请高人解释

zhou7209 发表于 2007-12-4 20:20

考一下试

1分钟到<br />071<br />05<br />05<br />072<br />05<br />073<br />05<br />074<br />05<br />delayms(200);<br />05<br />delayms(500);<br />05<br /><br />......<br /><br /><br />这样只能保证一分钟跑60次f05<br />71--74函数内部不被打断<br /><br />对错无所谓,写字就有分,以前老师都这样!<br /><br />不过声明下,俺是支持os的,特别是程序大了,任务多了的时候.<br />

农民讲习所 发表于 2007-12-4 20:30

顶级菜鸟

wxj1952 发表于 2007-12-4 20:35

消消气

怎么老有人说题目出的不合理,自相矛盾......其实管他那么多干吗?人家出了3000元,凭什么要给你出一个又合理又容易做的题,再一遍遍地给你解释题意,干脆告诉你答案,送你3000元?<br /><br />&nbsp;&nbsp;&nbsp;有本事抓住出题人的不合理,利用它的漏洞,让他输得没话可说,这才是真高手,真君子。

zhou7209 发表于 2007-12-4 20:35

呵呵

如果rom够大<br />那就一句一句写下去吧!

农民讲习所 发表于 2007-12-4 20:41

LZ你老实说,你工作了多长时间?

tage 发表于 2007-12-4 20:43

感觉象脑筋急转弯

是不是那700ms的任务中调用(已经包含)了500ms那个任务。

wxj1952 发表于 2007-12-4 20:47

感谢zhou7209关注

写得挺好的,主要问题是,OS的调度器可能不好实现这样的调度。调度器是顺序上行调度的,也就是以当前任务号为起始,然后看下一个任务是否就绪,这样,F071执行完肯定调度F072....然后回到秒F05。<br /><br />如果你是裸奔程序,可能不好管理了,请看我的裸奔程序,当然也不一定合理。

zhou7209 发表于 2007-12-4 20:57

俺是裸奔的

各个函数时间是严格限定的<br />这样的话&nbsp;for&nbsp;一下就可以按时间运行,只要晶镇准确

wxj1952 发表于 2007-12-4 20:59

回所长

其实所长一看我贴的答案,马上就能猜出我的工作年龄。不过所长您是说话有威信的长者,对那些小男人的随地吐痰的行为应该制止一下。<br /><br />还有1952是我家门牌号码,下次出差到上海,到淮海中路1950弄里W家来玩。

fengyeu 发表于 2007-12-4 21:02

===等待各大裸奔高手出招。。。。。。。

===等待各大裸奔高手出招。。。。。。。

zhou7209 发表于 2007-12-4 21:03

凑热闹

这两天要出差去上海<br />......

bird777 发表于 2007-12-4 21:07

楼主看看满意吧

&nbsp;while(1){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(F1Sec){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;F1Sec&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SecCounter++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(SecCounter&nbsp;&gt&nbsp;59){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SecCounter&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XXCounter&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;F07();&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(XXCounter&nbsp;==&nbsp;2)&nbsp;F08();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(XXCounter&nbsp;==&nbsp;4)&nbsp;F09();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(XXCounter&nbsp;==&nbsp;6)&nbsp;F10();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;F05();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XXCounter++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;}<br /><br />保证1分钟F05执行60次<br />保证1分钟F07-F10能全部执行,不打断.<br />如果这个是正解,如果允许F05被打断,楼主交代问题没有说清楚.<br /><br />

农民讲习所 发表于 2007-12-4 21:18

面试题?

老狼 发表于 2007-12-4 21:25

看来搂主对嵌入式还是不是很了解

所谓的任务时间限制,必须要讲最小的时间片,而最小的时间片,又是由CPU的指令速度决定的,所谓的不能打断,不是说不能响应硬件中断,而是需要关心硬件中断程序占用的时间,例如,ARM的速度是51的几十倍到几百倍,大么如果用来实现你的系统,误差肯定要比你用51的小得多,(说这句话估计有人要扔砖头了,这个道理就像AD转换一样,精度高了)你那个所谓的几百毫秒的任务,在执行的过程中完全可以完全去响中断,00以毫秒定义中断(这个中断只要执行的够快),在程序执行中你根本感觉不到这个过程中响应了中断,<br /><br />如果你就是要咬文嚼字的话,那就用OMAP59xx&nbsp;做吧,一半是海水,一半是火焰!双核的!<br /><br />或者选折一款内部集成&nbsp;RTC的&nbsp;MCU,&nbsp;

小嘿 发表于 2007-12-4 21:38

我提个白痴问题

既然F01~F04是顺序执行而且不可中断不可抢占,每个运行花费700ms,那这和一个2800ms的F14有什么区别??

老狼 发表于 2007-12-4 21:41

我一直没明白楼主的意思

OS&nbsp;的调度,如何调度,OS是靠什么进行的调度?OS的系统时间从何而来?无非是两个,要么时钟芯片,要么定时中断!OS只不过多了一只看不见的黑手!<br />
页: 1 2 3 4 5 6 7 8 9 10 [11] 12 13 14 15 16 17 18 19 20
查看完整版本: **lz说湖南人好斗,