打印

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

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

相关帖子

沙发
charrijon| | 2009-4-27 21:25 | 只看该作者

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

使用特权

评论回复
板凳
greenlife|  楼主 | 2009-4-28 07:29 | 只看该作者

谢谢charrijon

谢谢 charrijon,我在网上找的一个串口调试助手,看不到它的缓存,那我再找一个看看,谢谢了

使用特权

评论回复
地板
charrijon| | 2009-4-29 21:02 | 只看该作者

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

我的意思是你的2407串口缓存没那么大,你想得倒是蛮好的,100个数据全扔到2407串口的接收缓存里,但它没那么大,老早就被你撑破了

使用特权

评论回复
5
jacky-cheung| | 2009-5-14 17:15 | 只看该作者

高手在此

不关缓存的事,而是你在CMD文件定义的软件堆栈过小,放不下,小兄弟。

使用特权

评论回复
6
jindiaozhanji| | 2009-9-25 17:07 | 只看该作者
那么128的堆栈够不啊?-stack 128

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

26

主题

49

帖子

1

粉丝