OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4862|回复: 3

求大神们帮我看看这是为什么

[复制链接]

3

主题

9

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2014-4-23
在线时间
0 小时
发表于 2014-5-15 20:15:34 | 显示全部楼层 |阅读模式
5金钱
我的一个小串口程序
void USART1_IRQHandler()

if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{ //USART_ClearFlag(USART1, USART_IT_RXNE);     // 清标志
 Rx_Buffer[NumCount] = USART1->DR;

   printf("%c\n",Rx_Buffer[NumCount]); 
   NumCount++;
   if(NumCount >=255)
{
NumCount = 0;
printf("\r\n !\r\n");
}
}
}

因为 printf("%c\n",Rx_Buffer[NumCount]); 这一句里的\n会导致输出变成
1
2
3
5
7
9

我发送的是1234567890,去掉\n就恢复正常了,能告诉我这是为什么吗

最佳答案

查看完整内容[请看2#楼]

你在中断里面发送接收到的数据,能输出这个已经算不错了。。。 不丢数据才怪。 串口又要收数据,又要发数据,这些都是要时间的。。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-15 20:15:35 | 显示全部楼层
你在中断里面发送接收到的数据,能输出这个已经算不错了。。。
不丢数据才怪。
串口又要收数据,又要发数据,这些都是要时间的。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

6

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2014-5-6
在线时间
1 小时
发表于 2014-5-15 20:20:46 | 显示全部楼层
把Buffer转换成字符串直接输出就可以了,你现在是按单字符输出的,每次输出后跟了一个\n.
回复

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2014-4-23
在线时间
0 小时
 楼主| 发表于 2014-5-16 11:24:33 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
似乎明白一些了,谢谢原子大哥。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-7 22:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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