• 欢迎光临万博体育manbetx官网!
  • 设为首页 设为首页 收藏 收藏本站
  • 首页
  • 万博manbetx官网
  • 万博体育manbetx
  • 万博manbetx
  • manbetx
  • 风云人物
  • 媒体动态
  • 产业经济
  • 移动通信
  • 数码电子
  • 万博体育manbetx官网_互联网科技资讯门户|电子|通信|数码|信息安全
    主页 > 移动通信 >
  • STM32 基于串口RS485双机通信原理浅析

  • 发布时间:2018-01-13 10:08
  • 4.09K
  •   485和232都是基于串口的通讯接口,在数据的收发操作上都是一致的。但是他两的通讯模式却大不相同~!232是全双工(例:A-B的同时B-A,瞬时同步)工作模式,而485是半双工(发时不能收,收时不能发)工作模式。在232通信中,主机在发送数据的同时可以收到从机发过来的数据;但在485通信中,收发要经过模式位的切换来进行,譬如,发送数据时,会把模式为置‘1’,表示为发送模式,此时不能接收;当接收数据时,会把模式‘0’,表示为接收模式,此时不能发送。

      串口的中断类型有很多种。这里主要讲两种:接收到数据中断和发送数据完成中断。这两个中断跟两个标志位有密切关系:RXNE(读数据寄存器非空)和TC(发送完成)。譬如在接收到数据的时候(RXNE,读数据寄存器非空),我们要产生中断。在发送数据结束的时候(TC,发送完成)要产生中断。这两种中断的产生方法都是在串口中断函数(USART_ITConfig();)中配置。并在获取中断状态函数(USART_ITStatus();)中判断是发送中断还是接受中断。

      注意:1、有人问当产生接收中断时,没看到程序中清除中断标志啊,那不就一直中断下去了吗?这里有两种方法清除中断标志(书里面也有):1、尽快读取USART_DR(数据寄存器),通过读USART_DR可以将该位清零;2、可以直接向该位写‘0’,直接清零。

      1、在主函数中,扫描按键。一旦key0按下,首先将5个字节的数据存入rs485buf[]数组中,然后调用RS485_Send_Data(rs485buf,5);函数将5个字节的数据发送到串口。

      3、前两个是发送。现在是接收了。主函数中通过RS485_Receive_Data();不停的接收。

      如果一直没有按按键,则不会发送数据,也就不会产生接收中断,也就不会往我们定义的接收缓冲区(RS485_RX_BUF[64])里写数据。RS485_RX_CNT计数器的值也就是‘0’,对应在RS485_Receive_Data();函数中就不会进入里面的if语句(下图中红框)

      如果按键按下了,就会发送数据,就会产生接收中断,就会往我们定义的接收缓冲区(RS485_RX_BUF[64])里写数据,RS485_RX_CNT计数器的值也就开始自增,对应在RS485_Receive_Data();函数中就会进入里面的if语句,从之前定义的接收缓冲区(RS485_RX_BUF[64])里面取数据。

    上一篇:烽火通信关于使用闲置募集资金购买银行理财产品到期收回的公告
    下一篇:国家电网考试备考资料:通信类——通信原理
  • 图说天下
    首页 | 免责声明 | 万博manbetx官网 | 万博体育manbetx | 万博manbetx | manbetx | 风云人物 | 媒体动态 | 产业经济 | 移动通信 | 数码电子 |
  • Copyright©2008-2018 万博体育manbetx官网(www.setcem.com) All rights reserved
    本站部分文章、图片源自网络或网友自主发布,不代表本站观点,如有版权问题请及时联系我们删除。
  • 网站地图