0
点赞
收藏
分享

微信扫一扫

单片机的换行字符\r\n和\n的相关问题

棒锤_45f2 2022-01-13 阅读 88

1:问题

在使用单片机在串口助手上打印的时候,需要使用\r\n才能正常的换行. 而在linux在打印信息只需要一个\n

2:原因

这是由于系统对换行符的不同和导致的
通常使用单片机打印信息是输入到windox下的串口助手上,而window下的换行是\r\n
而unix和linux下的换行符\n

3:符号含义

\r是回车,carriage return的意思,作用是返回到当前行的最前方。
\n是换行,line feed的意思,作用是跳到下一行的当前位置。
\r\n是回车+换行,很容易理解,它的作用是跳到下一行的开始位置。

让\n在windos下和linux下效果一样
这需要自己处理一下,每当检测到\n的时候,在前面插入一个\r

//实现一个\n也能换行的效果
int usart_send_data1(uint8_t *data, uint32_t lens)
{
  uint16_t length = 0;
  for (length = 0; length < lens; length++)
  {  
    if (data[length] == '\n')//检测到换行符\n
    {    
        while((USART1->SR&0X40)==0);//等待上次发送完成完成
        USART_SendData(USART1, '\r');//插入一个\r
    }
    while((USART1->SR&0X40)==0);    
    USART_SendData(USART1,data[length]);
  }
  return length;
}
举报

相关推荐

0 条评论