-
支持一下楼主
-
哦,了解了,谢谢~
-
额,确实是理解错了,又看了一下数据手册,只有接收产生错误时才将IIR_RLS置位,然后进IIR_RLS中断,之前是以为LSR_RDR置位也会导致IIR_RLS置位。:titter:
但是数据已经是错的,为什么还要用UARTBuffer把它接出来啊?
-
例程里初始化的是LPC_UART->IER = IER_RBR | IER_RLS; 而且数据手册上是说当RBR包含未读字符时,LSR_RDR就被置位,那按理来说if (LSRValue & LSR_RDR)这个分支也应该会进去啊,但事实上它没有进去,而且我想不到还有什么其它的情况可以进到这个分支里,就是这里我不明白。
-
非常感谢赵俊版主的解答,代码是什么意思我能看懂,关键是不知道为什么要这么写。我测试过了,程序是走到else if (IIRValue == IIR_RDA)这个分支里的,但if (LSRValue & LSR_RDR)这个分支里的代码又是做什么用的呢?为什么一个接收中断要有两个中断标识,而且对两个不同的中断标识处理的代码都是一样的。这两个标识分别叫接收数据准备好RDR和接收数据可用RDA,有什么区别,数据手册上说得都不清楚。
还要补充一个问题,IIR_CTI是标识什么的,是指接收超时中断吗?Auto-baud 超时中断指的又是什么。因为我希望有这样的功能,5秒之内串口没有接收到返回值要触发一次中断,但不知道怎么去实现。
还有,我拿ULINK仿真的时候,串口中断函数进不去,最后拿个LED来指示的:Sweat:
-
谢谢楼主,很有多
-
看一下先
-
很好的例子
-
嗯,最近我一直在看这个资料,确实很不错,通俗易懂
-
签个到:)
-
高手不傲慢,只是对那些懒得动脑的人有些傲慢。这话经典。