其实程序中只包含了3个函数而已,分别是发送数据,接收数据,队列刷新函数。因为只是想写一个较为简单的通信函数,没有针对具体的应用,所以看起来那几个函数完成的功能有限。
在网上查了有关串口通信的资料,多数是基于缓冲的。有人说,像单片机这样少RAM的,如果无外部RAM,一般都是直接收发。我倒没有考虑这些,只是简单的假设缓冲在片内RAM,这样简化些。
有些意外的是,我原本只是想用缓冲区收发,至于这样的缓冲区倒底是如何实现的,一开始并不清楚。后来,突然联想到RTL8019AS的硬件缓冲结构,于是就用在了这。想不倒的是,这种缓冲结构用的倒是挺多。在完成整个程序后,倒是有些成就感,毕竟能够活学活用,先思考,而不是一开始就上网找现有的程序。
另外,在写这个程序和查找资料时,看到网上有关于ARM的串口缓冲通信方式,除了硬件上不一样外。收发的方式都是相同的。而且,很多硬件驱动中都基于同样的方式。这一点让我觉得很兴奋。
整个程序花了我将近一天时间。主要的时间耗费在调试上,常常是因为考虑不周全倒至程序功能不正确,而所掌握的程序调试方法看来还不熟练;另外,在写程序前没有仔细的设计。这两点以后需要注意。
这几个函数,我打算在以后进行改进。想加入xoff/xon流控制,另外,想在单片机上实现kermit协议,不过看起来这方面的资料比较少。国外的网站访问不了,国内的又没有相关的介绍。以后再说吧 完成的工程文件:
文章评论(0条评论)
登录后参与讨论