LPC串口接收问题
用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();
} 看到了库和操作系统。
初始化的波特率是多少?
用小数分频吗?
Excellence 发表于 2013-5-30 14:53 static/image/common/back.gif
看到了库和操作系统。
初始化的波特率是多少?
用小数分频吗?
波特率115200 单片机和LPC都一样的,现在发现每次都有溢出错误,我FIFO触发深度1个字节,是不是有接收到数据就到中断的啊 是的。
把初始化好好看看。
中断中的状态看看。有超时,接收,发送中断。
FIFO开14个字节,再加超时判断,应该没问题。 当然还有硬件方面的问题。
我再用485,其实对软件来说,和RS232没区别。多机就加上发送使能。
产品用三个串口,同时工作,各连各的设备,有无线,485,RS232.
Excellence 发表于 2013-5-30 16:20 static/image/common/back.gif
当然还有硬件方面的问题。
我再用485,其实对软件来说,和RS232没区别。多机就加上发送使能。
产品用三个串 ...
用的LPC1788吗?我现在LPC发是正常的,单片机上传就会出现这个问题 先调232,再调485呢 1768.
串口基本一样。
1788我也调试过。
数据中有回车符吗?我碰到过lpc1768收到回车符不能进中断的情况 canspider 发表于 2013-5-30 17:05 static/image/common/back.gif
先调232,再调485呢
和电脑通信是好的 cyj_0220 发表于 2013-5-30 17:39 static/image/common/back.gif
数据中有回车符吗?我碰到过lpc1768收到回车符不能进中断的情况
没有回车符啊 Excellence 发表于 2013-5-30 17:34 static/image/common/back.gif
1768.
串口基本一样。
1788我也调试过。
发现,LPC怎么没有起始位,这里寄存器只有数据和停止位,会不会是这个原因 下个串口监控软件,看看。
Excellence 发表于 2013-5-31 08:33 static/image/common/back.gif
下个串口监控软件,看看。
多谢,问题解决了 我都是直接寄存器操作的~ chenweigang 发表于 2013-5-31 14:58 static/image/common/back.gif
多谢,问题解决了
分享一下经验。呵呵呵。
chenweigang 发表于 2013-5-31 14:58 static/image/common/back.gif
多谢,问题解决了
是啊,分享一下经验吗,别一句解决了就没下文 mowin 发表于 2013-5-31 18:11 static/image/common/back.gif
是啊,分享一下经验吗,别一句解决了就没下文
惭愧惭愧,是我单片机的问题,数据发的太快了,连续发的时候因为数据都一样所以是对的。 Excellence 发表于 2013-5-31 16:17 static/image/common/back.gif
分享一下经验。呵呵呵。
惭愧惭愧,是我单片机的问题,数据发的太快了,连续发的时候因为数据都一样所以是对的。 楼主问题解决了么?
Excellence 发表于 2013-5-30 16:13
是的。
你好,可以请教一下你关于LPC串口中断的使用么?他们怎么配合使用的?终端怎么处理接收或发送的数据的啊?我初学LPC1788,看手册看得晕了? 你好,可以共享一下LPC的库函数么?或者我想和你交流一下LPC1788串口的使用?我是初学者,希望前辈赐教 LPC1788有官方例程。
你可以先看看。
还有数据手册看看,知道哪些寄存器,功能,设置。
页:
[1]