TC标志位和TXE标志位那个更加适合MODBUS RTU 通信?

一. TC和TXE的置位

stm32f1系列

相同点:TC和TXE软件清零,硬件置1

不同点:发送单个字节,需要等待TXE被置1

               发送多个字节,发送过程中,需要等待TXE被置1,最后一个字节需要等待TC置1

 二. 两个配合使用

TXE用在MODBUS RTU数据帧的发送过程中。

 TC用在MODBUS RTU数据帧最后确认。

MODBUS RTU 需要确定当前数据帧发送完成后,才能发送下一位数据帧,用TC确认数据帧全部发送完成。

两者都要使用。

三. 代码

void RS485_byte(unsigned char d)  //485发送一个字节  TXE
{
  
  RS485_RT_1;  //将其设置位发送模式
  USART_SendData(USART1, d); // 发送一个字节
    while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET); // 等待TXE置1
  RS485_RT_0;  //将其设置为接收模式
  
}


// 发送数组 
void RS485_SendDatas(unsigned char *datas, int len)  
{  
    int i;  
        RS485_RT_1;  //发送模式
    for (i = 0; i < len; i++)  
    {  
          RS485_byte(datas[i]);
    }  
         /* 等待发送完成 */
    while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TC) == RESET);//等待TC置1
        RS485_RT_0;  //接收模式
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值