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;
}