OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5992|回复: 2

LPC串口接收问题

[复制链接]

48

主题

177

帖子

0

精华

高级会员

Rank: 4

积分
782
金钱
782
注册时间
2013-4-23
在线时间
166 小时
发表于 2013-5-30 14:37:35 | 显示全部楼层 |阅读模式
用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();

}
努力做,耐心等
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

48

主题

177

帖子

0

精华

高级会员

Rank: 4

积分
782
金钱
782
注册时间
2013-4-23
在线时间
166 小时
 楼主| 发表于 2013-5-30 14:38:11 | 显示全部楼层
字体复制过来怎么变成这样了
努力做,耐心等
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-30 21:07:16 | 显示全部楼层
这里用LPC的人比较少哦,呵呵.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-19 05:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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