搜索
bottom↓
回复: 10

lpc 120MHZ的主频,他的机器周期,指令周期是多少?在求教...

[复制链接]

出0入0汤圆

发表于 2012-7-18 17:29:28 | 显示全部楼层 |阅读模式
现在想知道执行一条语句的时间是多少,没找到相关信息。
问题如题所示:我目前设定的主时钟是120MHz的,那么他的时钟周期就是  1s/12M
机器周期是多少?指令周期呢?
我执行一条 __NOP();  需要多长时间?

在求教各位有没有好的延时方案:

在执行通讯的函数中,假如中途要延时1ms的话,有没有好的方案,除了用死循环,有什么办法可以跳出执行其他的程序,到时间了再回到这个函数的位置继续执行?

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2012-7-18 17:36:50 | 显示全部楼层
我的理解是:主时钟设置的是120MHz,那么机器周期应该是1/120MHz,指令周期如何使单周期指令就等于机器周期,如果是n周期指令就是n*机器周期。
另,对于C写的延时函数,你一定要看对应编译的汇编有多少行指令,每个指令的执行周期。这样算才比较准。只是比较,因为编译器不同的优化模式和编译器的不同,可能同一段C代码编译出来的不一样。
如果你对延时时间不是要求特别高的话,估算就可以了。如果是要求高,一定要用RTC时钟,同时建议定时器中断做比较好。

出0入0汤圆

 楼主| 发表于 2012-7-18 18:03:46 | 显示全部楼层
jiamingz 发表于 2012-7-18 17:36
我的理解是:主时钟设置的是120MHz,那么机器周期应该是1/120MHz,指令周期如何使单周期指令就等于机器周期 ...

你说的延时估算也是在里面加个for循环?那样的话还是占用的那个时间段啊,我想的是有没有方法不占用他

出0入0汤圆

发表于 2012-7-18 18:11:44 | 显示全部楼层
lz需要给出哪种ic,是不是属于arm系列 cotext M3, 如果是cortext M3, 不能用指令个数来计算时间,arm系列都是指令流水线结构,指令延时是不准的,
如果不使用systick定时器,可以用systick查询方式延时,这个是很准的,参考stm32的延时,http://bbs.ednchina.com/BLOG_ARTICLE_236497.HTM
如果你要把延时时间利用起来,只能使用操作系统 ucos, rtos, rt-thread 等,

出0入0汤圆

 楼主| 发表于 2012-7-18 18:19:49 | 显示全部楼层
xiaomu 发表于 2012-7-18 18:11
lz需要给出哪种ic,是不是属于arm系列 cotext M3, 如果是cortext M3, 不能用指令个数来计算时间,arm系列都是 ...

就是LPC1766的,一般不会使用指令延时的,用这个主要是不太重要的地方,可是又需要延时,没调指令的时间是不一样,可是执行__NOP();同一条指令的时间应该是一样的啊,估算这个时间,在US或者ns延时可以用的上。

按照你的说法,如果是裸奔的话一般在函数中的延时就只有通过死循环占用了?

个人觉得这样很浪费啊,整个循环下来也就是10几ms,要是在死循环中经常这样占用的话也感觉不好

出0入0汤圆

发表于 2012-7-19 09:14:38 | 显示全部楼层
裸奔的话,使用状态机结构,合理安排状态,大部分延时的时候都可以利用起来, 如果需要精确延时,那就使用定时中断处理,

出870入263汤圆

发表于 2012-7-29 22:46:30 | 显示全部楼层
使用协作式操作系统contiki-os,或者使用RTOS可以满足你的高效利用CPU梦想。LPC系列CM3,都是有flash加速模块的,它的工作原理就是给慢速flash增加总线宽度,例如128位宽度,这样,即使是30MHZ的flash也能提供30*128bits=30*16bytes=480MBytes/S的指令带宽了,在顺序执行时,足够满足120MHZ的CPU执行thumb代码。至于你说的单周期,多周期,要视不同指令而言。比如加载或者存储指令通常都是双周期指令,而单纯的计算指令一般都是单周期指令。

出870入263汤圆

发表于 2012-7-29 22:50:22 | 显示全部楼层
关于延时方案,我曾经给出过代码,是利用LPC内部通常闲置的模块RIT完成精确延时,不过需要RTOS的支持。
参考链接,http://www.cnblogs.com/embeddedt ... /05/26/2519293.html

出0入0汤圆

 楼主| 发表于 2012-7-29 23:19:08 | 显示全部楼层
armstrong 发表于 2012-7-29 22:50
关于延时方案,我曾经给出过代码,是利用LPC内部通常闲置的模块RIT完成精确延时,不过需要RTOS的支持。
参 ...

现在没用过这些,没用过RTOS,不过还是有很大的参考价值

出0入0汤圆

发表于 2012-7-29 23:25:30 | 显示全部楼层
ms级别的延迟,就上rtos好了。
cortex-m3本身就是给rtos设计的,建议你看看《cortex-m3权威指南》,想要深入理解,这个文档不看不行的。

出0入0汤圆

发表于 2012-10-21 10:52:36 | 显示全部楼层
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-6 14:59

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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