菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
350
0

XON/OFF

原创
05/13 14:22
阅读数 15030

#define XON 0x11
#define XOFF 0x13查找ASCII码表,这两个对应的是DC1(设备控制1)和DC3(设备控制3)

X/ON和X/OFF为开启和关闭发送器的信号。X /ON的实际信号为ASCII的Ctrl-Q键盘组合的位组合,X/OFF信号为Ctrl-S字符。在为计算机操作系统定义调制解调器时,可能需要用 XON/XOFF或CTS/RTS来指定流控制的使用。在发送二进制数据时,XON/XOFF可能不能识别,因为它被译成了字符。

 

 

 1 #define XON  0x11    /*Ctrl-Q*/
 2 #define XOFF 0x13 /*Ctrl-S*/
 3 
 4 void Xon_Xoffsend(unsigned char *buf,unsigned char len)
 5 {
 6     static unsigned short int NbrDataToTransfer =len;
 7     
 8     while(USART_ReceiveData(USART1)!=XON);
 9     while(NbrDataToTransfer--) 
10     {        
11         USART_SendData(USART1,TxBuffer[TxCounter++]);
12         while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); //等待发送结
13         if (USART_ReceiveData(USART1)==XOFF) 
14         {
15             while(USART_ReceiveData(USART1)==XON); 
16         } 
17     }
18 }
19 
20 void RTS_CTS(void)
21 {
22     if (接收缓冲区为空) 
23     {
24         RTS =0 ;/*从机查询if(CTS ==0)则从机可以发送,否则停止发送*/
25     }
26     else 
27     {
28         RTS =1 ;
29     }
30     if (CTS ==0) /*由从机复位和置位*/
31     {
32         Mast_send;
33     }
34     else 
35     {
36         Mast_sendStop!;
37     }
38 }
View Code

 

RTS/CTS:

  用在RS232中为控制收发方向;用在协议中或UART中是硬件流控,https://www.cnblogs.com/zurphy/p/4910847.html

没有串口控制器,用中断和普通IO口即可实现RTS与CTS功能。

RTS用GPIO实现,串口就绪准备接收数据拉低电平,串口停止接收拉高电平

CTS(是否可以发送数据,低电平有效)用中断实现,检测到低电平,将串口数据发送出去,检测到高电平则保留串口数据直到检测到低电平为止。

硬件流控:

  单片机   设备

  RTS     ->CTS

       CTS     <-RTS

扩展 ISP一键下载电路分析https://blog.csdn.net/hola_ya/article/details/81323743

发表评论

0/200
350 点赞
0 评论
收藏