[ZLG-ARM] NXP的ARM7时钟设置好像有问题,请ZLG指点

[复制链接]
2261|1
 楼主| gotomy 发表于 2008-7-4 15:43 | 显示全部楼层 |阅读模式
用的LPC2220的CPU,OSC为11.0592MHz,用的ZLG实例中的时钟设置,如下:<br /><br />//时钟定义<br />#define&nbsp;Fosc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;11059200&nbsp;<br />#define&nbsp;Fcclk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Fosc&nbsp;*&nbsp;4)&nbsp;<br />#define&nbsp;Fcco&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Fcclk&nbsp;*&nbsp;4)<br />#define&nbsp;Fpclk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Fcclk&nbsp;/&nbsp;4)&nbsp;*&nbsp;1<br /><br />//时钟设置流程<br />PLLCON&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />#if&nbsp;(Fpclk&nbsp;/&nbsp;(Fcclk&nbsp;/&nbsp;4))&nbsp;==&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;VPBDIV&nbsp;=&nbsp;0;<br />#endif<br />#if&nbsp;(Fpclk&nbsp;/&nbsp;(Fcclk&nbsp;/&nbsp;4))&nbsp;==&nbsp;2<br />&nbsp;&nbsp;&nbsp;&nbsp;VPBDIV&nbsp;=&nbsp;2;<br />#endif<br />#if&nbsp;(Fpclk&nbsp;/&nbsp;(Fcclk&nbsp;/&nbsp;4))&nbsp;==&nbsp;4<br />&nbsp;&nbsp;&nbsp;&nbsp;VPBDIV&nbsp;=&nbsp;1;<br />#endif<br /><br />#if&nbsp;(Fcco&nbsp;/&nbsp;Fcclk)&nbsp;==&nbsp;2<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLCFG&nbsp;=&nbsp;((Fcclk&nbsp;/&nbsp;Fosc)&nbsp;-&nbsp;1)&nbsp;|&nbsp;(0&nbsp;&lt&lt&nbsp;5);<br />#endif<br />#if&nbsp;(Fcco&nbsp;/&nbsp;Fcclk)&nbsp;==&nbsp;4<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLCFG&nbsp;=&nbsp;((Fcclk&nbsp;/&nbsp;Fosc)&nbsp;-&nbsp;1)&nbsp;|&nbsp;(1&nbsp;&lt&lt&nbsp;5);<br />#endif<br />#if&nbsp;(Fcco&nbsp;/&nbsp;Fcclk)&nbsp;==&nbsp;8<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLCFG&nbsp;=&nbsp;((Fcclk&nbsp;/&nbsp;Fosc)&nbsp;-&nbsp;1)&nbsp;|&nbsp;(2&nbsp;&lt&lt&nbsp;5);<br />#endif<br />#if&nbsp;(Fcco&nbsp;/&nbsp;Fcclk)&nbsp;==&nbsp;16<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLCFG&nbsp;=&nbsp;((Fcclk&nbsp;/&nbsp;Fosc)&nbsp;-&nbsp;1)&nbsp;|&nbsp;(3&nbsp;&lt&lt&nbsp;5);<br />#endif<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLFEED&nbsp;=&nbsp;0xaa;<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLFEED&nbsp;=&nbsp;0x55;<br />&nbsp;&nbsp;&nbsp;&nbsp;while((PLLSTAT&nbsp;&&nbsp;(1&nbsp;&lt&lt&nbsp;10))&nbsp;==&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLCON&nbsp;=&nbsp;3;<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLFEED&nbsp;=&nbsp;0xaa;<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLFEED&nbsp;=&nbsp;0x55;<br /><br /><br />写了一个延时函数如下,实验下来该函数执行80000次约是1秒,约每执行一次12.5微秒,重复执行的就5条指令,执行一次怎么会这么长时间?<br />while(--i)<br />{<br />&nbsp;&nbsp;&nbsp;asm(&quot;CMP&nbsp;R1,#0&quot;);<br />}<br /><br />该延时函数反汇编如下:<br /><br /><br />
ZlgArm 发表于 2008-7-5 11:55 | 显示全部楼层

楼主

您好!<br />&nbsp;&nbsp;精确定时请尽量使用定时器来定时。您还可在本版面搜索时钟周期,了解相关信息。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;By&nbsp;ltt
您需要登录后才可以回帖 登录 | 注册

本版积分规则

43

主题

93

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部