[ZLG-ARM] lpc2148串口0通信的问题

[复制链接]
2844|7
 楼主| wangmengl 发表于 2007-11-30 17:34 | 显示全部楼层 |阅读模式
#define&nbsp;&nbsp;&nbsp;&nbsp;UART_BPS&nbsp;&nbsp;&nbsp;&nbsp;115200<br />void&nbsp;UART0_Init&nbsp;(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;uint16&nbsp;Fdiv;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;U0LCR&nbsp;=&nbsp;0x83;&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;Fdiv&nbsp;&nbsp;=&nbsp;(Fpclk&nbsp;/&nbsp;16)&nbsp;/&nbsp;UART_BPS;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;U0DLM&nbsp;=&nbsp;Fdiv&nbsp;/&nbsp;256;<br />&nbsp;&nbsp;&nbsp;&nbsp;U0DLL&nbsp;=&nbsp;Fdiv&nbsp;%&nbsp;256;<br />&nbsp;&nbsp;&nbsp;&nbsp;U0LCR&nbsp;=&nbsp;0x03;<br />}<br />int&nbsp;main&nbsp;(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;uint8&nbsp;const&nbsp;snd[64];<br />&nbsp;&nbsp;&nbsp;&nbsp;uint8&nbsp;const&nbsp;a[]=&quot;My&nbsp;name&nbsp;is&nbsp;Meili&nbsp;Wang&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL0&nbsp;=&nbsp;0x00000005;&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;UART0_Init();&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(1)&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sprintf(snd,&quot;%*.s&quot;,sizeof(a),a);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UART0_SendStr(snd);&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DelayNS(10);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />}<br />这个程序是周工的例程里的,我只改了main()中的,用原例也是这样的情况:<br />接收时是乱码,而且断断续续,要很久才能看到数据显示,(收发都是115200)<br /><br />请问一下是什么原因???谢谢!!
gumanzhou 发表于 2007-11-30 18:49 | 显示全部楼层

re

&nbsp;sprintf(snd,&quot;%*.s&quot;,sizeof(a),a);<br />是错的~~~~~
gumanzhou 发表于 2007-11-30 19:04 | 显示全部楼层

实验代码是没有问题的

你可以不要你那一句试一下就知道了<br /><br />sprintf(snd,&quot;%*.s&quot;,sizeof(a),a);<br /><br />我好没有见过这种表达的<br /><br />第二个的格式写的不对~~~~<br />改正就对了<br /><br /><br />
 楼主| wangmengl 发表于 2007-11-30 20:24 | 显示全部楼层

还是一样!!!是乱码,而且断断续续,很久才收到一次数

  
gumanzhou 发表于 2007-12-1 08:36 | 显示全部楼层

怎么可能啊??

我都做了实验是正确的,用你的方法是不行的<br /><br />你的表达是错的^^^^^
LittleKen 发表于 2007-12-1 10:20 | 显示全部楼层

注意周公代码对中断的处理

两年前看过周公开发板的代码,如果串口使用中断模式,需要自己完善中断处理程序,因为周公的代码里面是只对8个字节的中断进行了响应,如果你接受的字符不是8的整倍数,余数部分就要等到下次接收到够8个的时候才能得到。
 楼主| wangmengl 发表于 2007-12-1 16:15 | 显示全部楼层

谢谢各位大侠!!!

我的问题已经解决,是p0.14口的原因,一直处于低电平
gumanzhou 发表于 2007-12-1 20:29 | 显示全部楼层

sprintf(snd,"%*.s",sizeof(a),a);

&nbsp;sprintf(snd,&quot;%*.s&quot;,sizeof(a),a);<br />这个语句我编译都通不过(ADS)<br /><br />还有如果是P0.14是低电平的话<br /><br />程序根本不可能运行……………………<br />还能发来乱码??<br />奇怪!!!!<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

65

帖子

0

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