[ZLG-ARM] Disable PLL & MEM后配置UART0出错

[复制链接]
2486|1
 楼主| arcueid 发表于 2007-7-10 10:28 | 显示全部楼层 |阅读模式
由于需要做了一个简单的串口,但是出现了以下问题<br /><br />int&nbsp;main(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;MAMCR&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Disable&nbsp;MEM&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLCON&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Disable&nbsp;PLL&nbsp;*/<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;(3&nbsp;&lt&lt&nbsp;8))&nbsp;!=&nbsp;0);&nbsp;/*&nbsp;Wait&nbsp;for&nbsp;disable&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;uart_init(8,&nbsp;'n',&nbsp;1,&nbsp;9600,&nbsp;Fosc);<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Hello&nbsp;world\n&quot;);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;。。。。。。<br />}<br /><br /><br />开始pll分频成以下情况的时候<br />#define&nbsp;Fosc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;11059200<br />#define&nbsp;Fcclk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Fosc&nbsp;*&nbsp;4)<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;4<br />串口可以打印Hello&nbsp;world<br /><br />但是pll分频成以下情况的时候<br />#define&nbsp;Fosc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;11059200<br />#define&nbsp;Fcclk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Fosc&nbsp;*&nbsp;4)<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 />请问是什么原因,先谢谢了
zlgARM 发表于 2007-7-11 20:49 | 显示全部楼层

arcueid

&nbsp;&nbsp;&nbsp;&nbsp;您好!<br />&nbsp;&nbsp;&nbsp;&nbsp;显示乱码就表明接收出错了,这正说明双方没有正确通信。两个UART要能正确无误地通信,需要若干必要条件。<br />&nbsp;&nbsp;&nbsp;&nbsp;两个UART要正确无误地通信,通讯参数上至少需要满足两个条件:<br />&nbsp;&nbsp;&nbsp;&nbsp;1、波特率一致;<br />&nbsp;&nbsp;&nbsp;&nbsp;2、帧格式一致。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;而波特率需要受外频时钟的影响,如果修改了外频时钟,而没有注意仍保持波特率不变,可能会导致必要条件不满足,使得通信出错。<br />&nbsp;&nbsp;&nbsp;&nbsp;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

13

帖子

1

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