异步通信USART

原子哥的视频讲解的中断部分自己听的不是很清楚,下面是我自己对其的理解,记录下来以防日后忘记。

 这是第26将中的部分代码:

这是第27讲中的部分代码:

 

 个人理解认为,之所以26讲与27讲的不同之处在于:

         26讲的程序主要功能就是不断接收和发送一个字节,并且是在主函数中,在完成接收和发送一个字节后,不断的刷新主函数的初始化函数,来达到完成接收和发送一个字节这个功能的不断循环。从而实现,所有接收到的字节,完整的发送回去。但是值得注意的是,在此过程中,并没有使用到通信的协议,只是简单的进行接收和发送一个字节。

        27讲的程序,通过利用USART的接收状态寄存器(寄存器结构如下图),实现设置通信之间的协议,当然寄存器中0~13位、第14位、第15位都是由你自己通过编写代码进行改变的,当然通过这几个关键位,你也可以设置自己的通信协议,比如说:通过设置一次性接收字节最大数变量,与第0~13位的数值作比较,来限制一次性接收到的字节个数;通过设置第14位置位后,Res接收到的下一个字节,来决定是由什么样的一个字节决定接收完全与否(实验中使用的是Res=0x0a)。其中0~13位(0X3FFF)是储存接收到的字节个数。第14位(0x4000)是用来标记如果(u8)Res接收到0x0d,则第14位置1(即接收状态寄存器与0x4000进行或运算),第15位(0x8000)是接收完成标志,

 比较26讲与27讲代码的不同之处,理解了通信协议是通过你编写代码改变(u16)USART_RX_STA(接收状态寄存器),然后与Res接收到的字节作比较、与通过设置一次性接收字节最大数变量作比较等的操作,完成通信协议的设置后,让我们具体来解读一下代码。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值