SCI只能发送部分数据的问题

[复制链接]
 楼主| greenlife 发表于 2009-4-27 20:18 | 显示全部楼层 |阅读模式
我用2407的SCI写了一个串口通信的程序,调试时上位机用地串口助手,现在的问题是,我定义了一个数组长度为100,但是只能发送一部分数据,然后就不动了。我采用中断接收,查询发送的方式。是这种情况,后来都改用中断来实现还是这个问题。我把发送的程序帖出来,大家看看是哪有问题啊。<br />&nbsp;&nbsp;&nbsp;while(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(flag)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(&nbsp;k=0;k&lt100;k++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;SCITXBUF=receive[k];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while((SCICTL2&0x80)==0)<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;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />其中flag是发送标志位,为1则启动发送,把100个数据发送完之后,使其为0,停止发送。但是我看了一上,每次都只能接收不到20个数据,就接不到数据了。停止运行后,它总是停在if&nbsp;(flag)这一句。查看变量值时,发现flag=0;可这是在哪变的啊?程序应该始终在for循环里面啊,怎么会把flag的值给变了呢,想了好久也不解,请大家指点。谢谢!
charrijon 发表于 2009-4-27 21:25 | 显示全部楼层

搂主看看你的串口缓存有多少就明白了

  
 楼主| greenlife 发表于 2009-4-28 07:29 | 显示全部楼层

谢谢charrijon

谢谢&nbsp;charrijon,我在网上找的一个串口调试助手,看不到它的缓存,那我再找一个看看,谢谢了
charrijon 发表于 2009-4-29 21:02 | 显示全部楼层

我的意思是你的2407串口缓存没那么大

我的意思是你的2407串口缓存没那么大,你想得倒是蛮好的,100个数据全扔到2407串口的接收缓存里,但它没那么大,老早就被你撑破了
jacky-cheung 发表于 2009-5-14 17:15 | 显示全部楼层

高手在此

不关缓存的事,而是你在CMD文件定义的软件堆栈过小,放不下,小兄弟。
jindiaozhanji 发表于 2009-9-25 17:07 | 显示全部楼层
那么128的堆栈够不啊?-stack 128
您需要登录后才可以回帖 登录 | 注册

本版积分规则

26

主题

49

帖子

1

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