[ZLG-ARM] 请问周工:我的LPC2103板子UART1最多只能接收16个字节

[复制链接]
3397|10
 楼主| 年轻不在 发表于 2010-8-14 09:52 | 显示全部楼层 |阅读模式
我是参考的周立功的中断程序,无论把FIFO深度设为多少,我的LPC2103板子UART1最多只能接收16个字节,超过16个字节程序就会退出中断,无论RDA还是CTI都进不去了...困扰好几天了,还望周工指导一下~
hotpower 发表于 2010-8-14 17:55 | 显示全部楼层
可参考俺在lpc213x有关帖子,自己搜索
hotpower 发表于 2010-8-14 17:56 | 显示全部楼层
可参考俺在lpc213x有关帖子,自己搜索
米其林r 发表于 2010-8-17 21:33 | 显示全部楼层
把你的相关源码放到论坛上,便于分析缘由。
 楼主| 年轻不在 发表于 2010-8-17 21:53 | 显示全部楼层
相关设置:通讯速率是9600bps

    U1FCR = 0x01;        // 使能FIFO,设置1个字节触发点
       U1IER = 0x01;        // 使能接收中断



中断程序:

void IRQ_UART1(void)
{
    uint8 Dummy;
    u1GNum = 0;         
     while ((U1IIR & 0x01) == 0)    // 判断是否有中断挂起   
     {            
        switch (U1IIR & 0x0F)     //  判断中断标志
       {                           
            case 0x04:       //  接收数据中断
                       
                u1GRcvNew = 1;         // 置接收新数据标志   
                Dummy = U1RBR;                            // 读数据
                if (u1GNum < 25)
                {                                      
                   u1GRcvBuf[u1GNum] = Dummy;    // 接收到的数据进缓存
                  u1GNum++;
                 }         
            break;  

                 
            case 0x0C:    // 字符超时中断(字符数不足上边设定的数值时)         
                     
                u1GRcvNew = 1;      
                while ((U1LSR & 0x01) == 0x01)   // 判断数据是否接收完毕
               {           
                    u1GRcvBuf[u1GNum] = U1RBR;
                    u1GNum++;
                }      
            break;
   
           default:
                break;
        }
     }
   VICVectAddr = 0x00;
}
LPC300 发表于 2010-8-19 21:02 | 显示全部楼层
从中断服务函数来看,该程序不会出来你所描述的问题,请检查UART初始化是否正确。并将你的代码修改的地方与开发板上的例程相比较,以便于找出问题所在。
amini 发表于 2010-12-6 14:43 | 显示全部楼层
linas 发表于 2010-12-29 15:46 | 显示全部楼层
学习了。
maoyanketi 发表于 2011-1-31 22:59 | 显示全部楼层
讲波特率改大点,另外菜农直接将您的代码发上来呗,好人做到底!
coco11 发表于 2011-2-1 16:48 | 显示全部楼层
我要搜索去鸟。
ladygaga 发表于 2011-2-1 22:24 | 显示全部楼层
好像见过。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

106

主题

447

帖子

1

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