微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 单片机学习笔记点滴

单片机学习笔记点滴

时间:10-02 整理:3721RD 点击:

以下 xxx()表示一个函数,没有特别说明的话指SAMPLE CODE里的自定义函数。
第一:串口工作环境地建立
点击FILE里的CONNECT后,调用 INIT.C里的SetupCommPort()进行串口初始化:
1打开串口
用API函数CreateFile
2设置串口
调用UpdateConnection(),先建立一个dcb结构体(记得一定要初始化后再使用),然后用API函数GetCommState把现在的串口配置存入新建的dcb中,因为一般对串口参数的设置就是波特率之类,其他用默认即可,获取现在串口配置保存到我们建立的 dcb中,再根据需要进行修改会方便得多。根据需要对dcb内的成员赋值后,再用API函数SetCommState使设置好的 dcb生效,下一步就是用API函数SetCommTimeouts进行超时设置。
最后用用API函数SetupComm设置输入输出缓存。
至此,串口已经准备好,可以供我们使用了。
无论什么时候需要开始使用串口,按上面的步骤进行初始化操作都是必须而且有效的。
这里有另外两个API函数顺便说一下,1CommConfigDialog,2PurgeComm。
第一个是调用WINDOWS自带的串口设置对话框设置串口参数,这需要新建立一个COMMCONFIG 结构体来接收设置,COMMCONFIG里也有一个dcb结构,通话框里的设置自然就是保存到这里边来了,这个结构体在使用前记得要初始化。在调用CommConfigDialog前把现在的dcb 结构存到COMMCONFIG里是个好办法,不然对话框里的参数都是系统默认的,还得一个一个改。另外COMMCONFIG 在使用前要对成员wVersion和dwSize 赋值,否则执行会有异常,具体设置在MSDN里有详细说明。有人说其中的dwSize 不能填 sizeof COMMCONFIG,但MSDN里用的就是SIZEOF,我也用得很好,没有任何问题。
第二个函数在MSDN的说明是:Discards all characters from the output or input buffer of a specified communications resource. It can also terminate pending read or write operations on the resource.简单说就是立即中断串口的一切操作,当用CommConfigDialog设置好串口参数后,当然是希望串口按新的状态工作,所以应该接着调用PurgeComm。如果你想等所有的读写(包括未决的)操作都完成再生效,就需要使用事件“event”,在后面会说到它。
最后用StartThreads(void)建立读、写线程,MTTY里的监视和读是同一个线程。
至此这里串口的工作环境建立完成。
第二 让串口按我们的要求进行读写
串口工作环境地建立比较程式化,一步一步做完即可。那怎么按我们的要求让串口工作起来呢?下面说说怎么具体地实现利用多线程进行异步串口操作。我也只是有了初步概念,以上叙述若有错误,日后再更正。

来源:上上电子网

http://www.dianzi333.com/list-574.html






顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶,顶

看不懂。。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top