打印
[ZLG-ARM]

关于 LPC2138 UART

[复制链接]
1601|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dsoyy|  楼主 | 2008-4-7 13:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
dsoyy|  楼主 | 2008-4-7 14:29 | 只看该作者

难道要一个字节一个字节的处理?

使用特权

评论回复
板凳
armecos| | 2008-4-7 16:36 | 只看该作者

就是要一个字节一个字节地处理,

    CPU速度很快,你感觉不到处理过程是断断续续的。

    最好用状态机实现接收过程,帧头识别状态、帧接收状态、帧接收完毕状态、帧处理状态。这样,不论1、4、8、14如何地与22不匹配,你的程序逻辑都很清晰而且适合所有FIFO长度情况。

使用特权

评论回复
地板
computer00| | 2008-4-7 17:13 | 只看该作者

可以搞个计数器,每收一个byte就加1,数量够就可以处理了

或者定义一种特殊的起始码。

使用特权

评论回复
5
armecos| | 2008-4-7 17:28 | 只看该作者

圈圈可能没有用过状态机编程,

记得第一次看到用状态机编写的程序,我被惊呆了,立马顿悟了多线程并发处理,面向对象实质,复杂信令处理,CPU工作原理......

    你说的计数器方法遇到复杂情况就不好处理了,比如:万一帧头丢失了怎么办?顺序全乱了,计数要在寻找到新的帧头后重新开始;处理过程中再去处理其他事情怎么办?状态机在这种处理中非常灵活,不管情况怎么变,只要增加状态就可以了,very easy,有机会一定了解一下这种编程方法。

使用特权

评论回复
6
dsoyy|  楼主 | 2008-4-7 17:35 | 只看该作者

谢谢2位大虾

我懂了也拓宽了思路!

使用特权

评论回复
7
computer00| | 2008-4-7 21:29 | 只看该作者

其实我那个就是一个状态机啊,没分那么细而已。

我做USB HOST从枚举到SCSI命令都是用的状态机,没有用死等。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

144

主题

566

帖子

3

粉丝