搞了好久,还是搞不定,特来求助

[复制链接]
2503|2
 楼主| dalujia 发表于 2009-6-28 21:37 | 显示全部楼层 |阅读模式
用的片子是lpc2365,在做掉电唤醒的工作,用外部中断2(只唤醒,不产生中断),按照zlg的模板,重新使能配置pll。但是总是在唤醒后复位,查了好多资料,还是不明白。下面是我的代码,请大家指教:<br />&nbsp;Delay(10000);<br />&nbsp;&nbsp;&nbsp;&nbsp;AD0CR&nbsp;=&nbsp;0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;PCONP&nbsp;=&nbsp;0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;PCON&nbsp;=&nbsp;0x02;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;OS_ENTER_CRITICAL();&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;Delay(10000);<br />&nbsp;&nbsp;&nbsp;&nbsp;EXTINT&nbsp;=&nbsp;BIT(1)&nbsp;|&nbsp;BIT(2)&nbsp;|BIT(3);<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLinit();&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;OS_EXIT_CRITICAL();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;while(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UART0Write((uint8*)&quot;step2&quot;,5);<br />&nbsp;&nbsp;&nbsp;&nbsp;OSTimeDly(OS_TICKS_PER_SEC);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//???<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br /><br /><br /><br />其中PLLinit()函数是直接从周立功的程序上找的。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;PLLinit(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;SCS&nbsp;=&nbsp;(SCS&nbsp;&&nbsp;0x04)&nbsp;|&nbsp;0x20;&nbsp;&nbsp;&nbsp;//&nbsp;使能主振荡器,1MHz~20MHz&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;<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;((SCS&nbsp;&&nbsp;0x40)&nbsp;==&nbsp;0&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;等待主振荡器可用<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(PLLSTAT&nbsp;&&nbsp;(1&nbsp;&lt&lt&nbsp;25))&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;如果PLL连接<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PLLCON&nbsp;&nbsp;=&nbsp;0x01;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PLLFEED&nbsp;=&nbsp;0xAA;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;断开连接<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PLLFEED&nbsp;=&nbsp;0x55;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PLLCON&nbsp;&nbsp;=&nbsp;0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PLLFEED&nbsp;=&nbsp;0xAA;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;不使能PLL<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PLLFEED&nbsp;=&nbsp;0x55;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;(PLLSTAT&nbsp;&&nbsp;(1&nbsp;&lt&lt&nbsp;24))&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;如果PLL使能&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;如果PLL已被使能,则先禁止PLL<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PLLCON&nbsp;&nbsp;=&nbsp;0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PLLFEED&nbsp;=&nbsp;0xAA;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;不使能PLL<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PLLFEED&nbsp;=&nbsp;0x55;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;CLKSRCSEL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0x01;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;选择主振荡器作为PLL输入时钟源&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLCON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;1;&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;使能但不连接PLL<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLCFG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;(((PLL_NValue&nbsp;-&nbsp;1)&nbsp;&lt&lt&nbsp;16)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;(PLL_MValue&nbsp;-&nbsp;1)&nbsp;);&nbsp;&nbsp;//&nbsp;设置N、M值&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLFEED&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0xAA;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;使能PLL<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLFEED&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0x55;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(((PLLSTAT&nbsp;&&nbsp;(1&nbsp;&lt&lt&nbsp;24))&nbsp;==&nbsp;0));//&nbsp;等待PLL可用<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;CCLKCFG&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;(Fcco&nbsp;/&nbsp;Fcclk&nbsp;-&nbsp;1);&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;用于防止CPU工作频率过大<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLCON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;3;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;连接PLL&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLFEED&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0xAA;<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLFEED&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0x55;&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;<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(((PLLSTAT&nbsp;&&nbsp;(3&nbsp;&lt&lt&nbsp;25))&nbsp;!=&nbsp;(3&nbsp;&lt&lt&nbsp;25)));//&nbsp;等待PLL连接好<br />}&nbsp;&nbsp;
zusen 发表于 2009-6-29 06:21 | 显示全部楼层

小狗没开吧?

  
 楼主| dalujia 发表于 2009-6-29 08:56 | 显示全部楼层

没开,关闭了

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

145

帖子

1

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