打印

一个STM32串口接收问题

[复制链接]
5133|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
BitFu|  楼主 | 2011-2-13 20:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 BitFu 于 2011-2-13 20:58 编辑

查询方式接收,接收函数如下:
uint8_t DebugReadByte(void)
{
    while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);
    return  USART_ReceiveData(USART1);
}


在程序里我需要接收一组数据,是这样调用的:
for(i=0;i<3;i++)
   buf=DebugReadByte();

问题出现在,用串口调试助手连续发送3个字节数据时无法-正常接收,一个一个的手动点击发送就能正确的接收,请教我的接收函数什么地方有问题?
沙发
way2888| | 2011-2-14 07:50 | 只看该作者
未清 USART_FLAG_RXNE标志

使用特权

评论回复
板凳
BitFu|  楼主 | 2011-2-15 21:56 | 只看该作者
谢谢楼上,代码改后OK!
uint8_t DebugReadByte(void)
{
        uint8_t ret;
        while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);
        ret=USART_ReceiveData(USART1);
        USART_ClearFlag(USART1,USART_FLAG_RXNE);
        return ret;
}

使用特权

评论回复
地板
陈永宾0| | 2011-2-16 09:03 | 只看该作者
手册上不是说 读那个数据寄存器 可以自动清除标志位吗?我是菜鸟 不知道对不对 嘿嘿

使用特权

评论回复
5
BitFu|  楼主 | 2011-2-19 09:35 | 只看该作者
本帖最后由 BitFu 于 2011-2-19 09:50 编辑

楼上:刚查出来,确实是那样,改后还是有问题。
看来不是串口的问题了。

使用特权

评论回复
6
陈永宾0| | 2011-2-19 23:25 | 只看该作者
嘿嘿嘿 我的最多发送6个字节 再多就开始乱了 继续努力

使用特权

评论回复
7
liangzz6557| | 2013-1-14 09:46 | 只看该作者
我也是这个问题,请问大家有解决方法不?

使用特权

评论回复
8
a868247| | 2013-1-14 22:02 | 只看该作者
BitFu 发表于 2011-2-19 09:35
楼上:刚查出来,确实是那样,改后还是有问题。
看来不是串口的问题了。 ...

你确定接电平转换芯片?如MAX232

使用特权

评论回复
9
jomosiron| | 2013-1-14 22:49 | 只看该作者
自动发送间隔时间不是很短吧

使用特权

评论回复
10
MariaBrook| | 2013-1-15 09:39 | 只看该作者
for(i=0;i<3;i++)
   buf=DebugReadByte();

如果只定义了一个buf来接受的话,楼主要观察buf,必然要进行显示,有可能在显示的过程中将buf被更新了多次。
建议定义数组来进行接受。接受完毕之后,再进行数据操作

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:芯艺工作室

194

主题

1053

帖子

3

粉丝