用的LPC2220的CPU,OSC为11.0592MHz,用的ZLG实例中的时钟设置,如下:<br /><br />//时钟定义<br />#define Fosc 11059200 <br />#define Fcclk (Fosc * 4) <br />#define Fcco (Fcclk * 4)<br />#define Fpclk (Fcclk / 4) * 1<br /><br />//时钟设置流程<br />PLLCON = 1;<br /> <br />#if (Fpclk / (Fcclk / 4)) == 1<br /> VPBDIV = 0;<br />#endif<br />#if (Fpclk / (Fcclk / 4)) == 2<br /> VPBDIV = 2;<br />#endif<br />#if (Fpclk / (Fcclk / 4)) == 4<br /> VPBDIV = 1;<br />#endif<br /><br />#if (Fcco / Fcclk) == 2<br /> PLLCFG = ((Fcclk / Fosc) - 1) | (0 << 5);<br />#endif<br />#if (Fcco / Fcclk) == 4<br /> PLLCFG = ((Fcclk / Fosc) - 1) | (1 << 5);<br />#endif<br />#if (Fcco / Fcclk) == 8<br /> PLLCFG = ((Fcclk / Fosc) - 1) | (2 << 5);<br />#endif<br />#if (Fcco / Fcclk) == 16<br /> PLLCFG = ((Fcclk / Fosc) - 1) | (3 << 5);<br />#endif<br /> PLLFEED = 0xaa;<br /> PLLFEED = 0x55;<br /> while((PLLSTAT & (1 << 10)) == 0);<br /> PLLCON = 3;<br /> PLLFEED = 0xaa;<br /> PLLFEED = 0x55;<br /><br /><br />写了一个延时函数如下,实验下来该函数执行80000次约是1秒,约每执行一次12.5微秒,重复执行的就5条指令,执行一次怎么会这么长时间?<br />while(--i)<br />{<br /> asm("CMP R1,#0");<br />}<br /><br />该延时函数反汇编如下:<br /><br /><br /> |
|