下面的都是一些C语言基础知识,只不过是具体算了一下,最好还是自己动手算一算呀,不过是真的秒啊 今天和大家的是串口通讯中是对数据如何处理的,一开始学的时候并没有注意,昨天仔细看了一下,把一些理解一下。 发现这个函数返回的数据其实是DR寄存器(数据寄存器)的值, 至于后边为什么是0x01FF,在我看来可能是因为串口通信是要选择字长为八位或者九位,进行与运算也就是前九位都保持不变。 刚一开始传输数据肯定是没有完成的,所以依次进入图中的序号1,2,3。在3中,将Res中的数据(DR寄存器中的数据)传输给定义的一个存储数据的一个数组USART_RX_BUF[],然后令USART_RX_STA自加一次,这样可能有点抽象,我列一个表格直观的看一下吧 下一步也就是要接受r,也就是0x0d了。进入到这里 也就是执行这一句USART_RX_STA|=0x4000也就是和0100 0000 0000 0000 0000进行或运算,现在USART_RX_STA=4,按照十六进制也就是0100,两个进行或运算。 此时USART_RX_STA=0x4004,这时我们看一下USART_RX_STA&0x4000 也就是0x4000,就进入了这一部分 得到USART_RX_STA=0xC004 这个时候len=USART_RX_STA&0x3fff因为前面的0x4000和0x8000都是对最高的两位进行运算,我们与0x3fff进行与运算也就将最高两位清零,得到原来的数据,如图 得到len=4。 这些东西大部分都是C语言中位运算中的知识,看完之后啧啧啧 秒啊~ 也可能是我太菜了,现在才懂。。。这里写目录标题
串口中断函数


USART_RX_STA其实算是一个计数的标志吧。稍后仔细说一下。
这里是判断中断的标志位是否置位,如果置位那么久将数据存储在Res里,我们看一下USART_ReceiveData() goto进去是这样的
还有一个非常重要的点就是串口发送数据是结尾必须是0x0d和0x0a,也就是 rn 假设我们要发送数据WSSGrn





之后进行这个运算USART_RX_STA|=0x8000

同上进入主函数中的这一部分


本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算
官方软件产品操作指南 (170)