野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12532|回复: 2

printf函數到底發的是什麼

[复制链接]
发表于 2015-9-6 00:02:45 | 显示全部楼层 |阅读模式
本帖最后由 11kxmx 于 2015-9-7 07:57 编辑

最近又重新作串口試驗:
unsigned char  m=0x20,n=3;
int main(void)
{
  /* USART1 config 115200 8-N-1 */
  USART1_Config();
  //printf("\r\n this is a usart printf demo \r\n");
    printf("\r\n %d \r\n",m);
   for(;;)
  {   
  }
}
為什麼用野火附帶的串口接收軟件,收到是32
但利用我自編的上位機軟件(16進制接收)收到的是一串字符  0A 20 33 32 20 0D 0A
若m=0xF7,則 收到的是                    0A 20 32 34 37 20 0D 0A
很顯然中間的紅字是32和247的ASCI碼,前後的5個字符又是怎麼冒了來的
而我的上位機軟件在51單片機開發板上實驗:直接用SBUF=m,則沒有前後的尾巴
好象與\r\n 有關,但將發送語句 改成printf("%d",m)結果是
      m=0x20時收到  32    m=0xF7時收到  34 37 這又是什麼意思

另外我想直接发0-255的8位二进制数,直接串口发送语句
USART_SendData(USART1, (uint8_t) m);
   while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
则无论用野火附带串口软件还是自己的软件,上位机什么也收不到,请问高手是怎么回事?
回复

使用道具 举报

发表于 2015-12-13 11:39:22 | 显示全部楼层
帮顶                          
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-13 21:46:21 | 显示全部楼层

又试了,采用USART_SendData(USART1, (uint8_t) m);降低波特率后用我的上位机软件也可以正确接收了
用  printf("\r\n %d \r\n",m)發送時前面和後面出現的 0A OD就是格式符\r\n 換行和到行首,我的上位機程序不能识別,把它們當成普通數據了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-1-11 07:43 , Processed in 0.033824 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表