搜索
bottom↓
回复: 23

LPC串口接收问题

[复制链接]

出0入0汤圆

发表于 2013-5-30 14:36:54 | 显示全部楼层 |阅读模式
用LPC1788和单片机485串口通信,在单片机发给LPC时如果连续发同一个数据则接收正确。但是我单步调试的情况下,在单片机端发一个数据,在LPC中断程序中不能马上进去,要等到我单片机再发送一次数据,然后进入LPC中断,先是线接收中断,然后是接收中断,接收的数据也是不对的。这时为何呢?
        //3.配置UART参数
        UART_ConfigStructInit(&UARTConfigStruct);
//         UARTConfigStruct.Baud_rate = 4800;                //修改默认配置的波特率
        //4.初始化UART
        UART_Init(UART_3, &UARTConfigStruct);
        //5.配置FIFO
        UART_FIFOConfigStructInit(&UARTFIFOConfigStruct);//FIFO默认值配置
//         UARTFIFOConfigStruct.FIFO_Level = UART_FIFO_TRGLEV2;//更改默认配置 FIFO触发深度8字符
        //6.初始化FIFO
        UART_FIFOConfig(UART_3, &UARTFIFOConfigStruct);//FIFO初始化
        //7.使能UART
        UART_TxCmd(UART_3, ENABLE);
        //8.使能UART RX 中断(先不使能发送中断)
        UART_IntConfig(UART_3, UART_INTCFG_RBR, ENABLE);
//         UART_IntConfig(UART_3,UART_INTCFG_THRE,ENABLE);
        //9.使能UART 线状态 中断
        UART_IntConfig(UART_3, UART_INTCFG_RLS, ENABLE/*DISABLE*/);
        //10.设置中断优先级 抢占式1 子优先级1
        NVIC_SetPriority(UART3_IRQn, ((0x01<<3)|0x01));
        //11.使能各中断
        NVIC_EnableIRQ(UART3_IRQn);//使能中断
中断子程序:
void UART3_IRQHandler(void)
{
        uint32_t int_src, temp, temp1;
//         OSIntEnter();
        //1.确定中断源
        int_src = UART_GetIntId(UART_3);
        temp = int_src & UART_IIR_INTID_MASK; //中断标识
        //2.接收线 中断
        if(temp==UART_IIR_INTID_RLS)
        {
                //2.1 检查线状态
                temp1 = UART_GetLineStatus(UART_3);//读取LSR时中断会被清除
                temp1 &= (UART_LSR_OE | UART_LSR_PE | UART_LSR_FE | UART_LSR_BI | UART_LSR_RXFE);
                //2.2 处理错误
                if(temp1)
                {
               
                }
               
        }
        //3. 接收或者超时中断
        if ((temp == UART_IIR_INTID_RDA) || (temp == UART_IIR_INTID_CTI))
        {
                UART_Int_Receive();
        }
        //4. 发送中断(FIFO为空)
        if (temp == UART_IIR_INTID_THRE)
        {
//                 UART_Int_Transmit(0XF7,0XF7,5,(uint8_t *)RUN);
        }
//         OSIntExit();

}

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2013-5-30 14:53:01 | 显示全部楼层
看到了库和操作系统。
初始化的波特率是多少?
用小数分频吗?

出0入0汤圆

 楼主| 发表于 2013-5-30 15:36:17 | 显示全部楼层
Excellence 发表于 2013-5-30 14:53
看到了库和操作系统。
初始化的波特率是多少?
用小数分频吗?

波特率115200 单片机和LPC都一样的,现在发现每次都有溢出错误,我FIFO触发深度1个字节,是不是有接收到数据就到中断的啊

出0入0汤圆

发表于 2013-5-30 16:13:36 | 显示全部楼层
是的。
                  

出0入0汤圆

发表于 2013-5-30 16:18:14 | 显示全部楼层
把初始化好好看看。
中断中的状态看看。有超时,接收,发送中断。
FIFO开14个字节,再加超时判断,应该没问题。

出0入0汤圆

发表于 2013-5-30 16:20:47 | 显示全部楼层
当然还有硬件方面的问题。
我再用485,其实对软件来说,和RS232没区别。多机就加上发送使能。
产品用三个串口,同时工作,各连各的设备,有无线,485,RS232.

出0入0汤圆

 楼主| 发表于 2013-5-30 16:39:49 | 显示全部楼层
Excellence 发表于 2013-5-30 16:20
当然还有硬件方面的问题。
我再用485,其实对软件来说,和RS232没区别。多机就加上发送使能。
产品用三个串 ...

用的LPC1788吗?我现在LPC发是正常的,单片机上传就会出现这个问题

出0入8汤圆

发表于 2013-5-30 17:05:52 | 显示全部楼层
先调232,再调485呢

出0入0汤圆

发表于 2013-5-30 17:34:41 | 显示全部楼层
1768.
串口基本一样。
1788我也调试过。

出0入0汤圆

发表于 2013-5-30 17:39:15 | 显示全部楼层
数据中有回车符吗?我碰到过lpc1768收到回车符不能进中断的情况

出0入0汤圆

 楼主| 发表于 2013-5-30 17:57:55 | 显示全部楼层
canspider 发表于 2013-5-30 17:05
先调232,再调485呢

和电脑通信是好的

出0入0汤圆

 楼主| 发表于 2013-5-30 17:58:16 | 显示全部楼层
cyj_0220 发表于 2013-5-30 17:39
数据中有回车符吗?我碰到过lpc1768收到回车符不能进中断的情况

没有回车符啊

出0入0汤圆

 楼主| 发表于 2013-5-30 18:17:06 | 显示全部楼层
Excellence 发表于 2013-5-30 17:34
1768.
串口基本一样。
1788我也调试过。

发现,LPC怎么没有起始位,这里寄存器只有数据和停止位,会不会是这个原因

出0入0汤圆

发表于 2013-5-31 08:33:44 | 显示全部楼层
下个串口监控软件,看看。

出0入0汤圆

 楼主| 发表于 2013-5-31 14:58:09 | 显示全部楼层
Excellence 发表于 2013-5-31 08:33
下个串口监控软件,看看。

多谢,问题解决了

出0入0汤圆

发表于 2013-5-31 15:00:24 | 显示全部楼层
我都是直接寄存器操作的~

出0入0汤圆

发表于 2013-5-31 16:17:02 | 显示全部楼层
chenweigang 发表于 2013-5-31 14:58
多谢,问题解决了

分享一下经验。呵呵呵。
   

出0入0汤圆

发表于 2013-5-31 18:11:01 | 显示全部楼层
chenweigang 发表于 2013-5-31 14:58
多谢,问题解决了

是啊,分享一下经验吗,别一句解决了就没下文

出0入0汤圆

 楼主| 发表于 2013-6-2 10:02:32 | 显示全部楼层
mowin 发表于 2013-5-31 18:11
是啊,分享一下经验吗,别一句解决了就没下文

惭愧惭愧,是我单片机的问题,数据发的太快了,连续发的时候因为数据都一样所以是对的。

出0入0汤圆

 楼主| 发表于 2013-6-2 10:02:50 | 显示全部楼层
Excellence 发表于 2013-5-31 16:17
分享一下经验。呵呵呵。

惭愧惭愧,是我单片机的问题,数据发的太快了,连续发的时候因为数据都一样所以是对的。

出0入0汤圆

发表于 2013-10-29 16:53:42 | 显示全部楼层
楼主问题解决了么?

出0入0汤圆

发表于 2013-12-9 10:13:21 | 显示全部楼层

你好,可以请教一下你关于LPC串口中断的使用么?他们怎么配合使用的?终端怎么处理接收或发送的数据的啊?我初学LPC1788,看手册看得晕了?

出0入0汤圆

发表于 2013-12-9 10:15:45 | 显示全部楼层
你好,可以共享一下LPC的库函数么?或者我想和你交流一下LPC1788串口的使用?我是初学者,希望前辈赐教

出0入0汤圆

发表于 2013-12-9 11:17:53 | 显示全部楼层
LPC1788有官方例程。
你可以先看看。
还有数据手册看看,知道哪些寄存器,功能,设置。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-23 14:07

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表