野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9713|回复: 6

关于USART_ReceiveData 函数返回值的问题

[复制链接]
发表于 2016-3-17 16:58:41 | 显示全部楼层 |阅读模式
1.PNG
return (int)USART_ReceiveData(USARTx);返回值最后什么?


uint8_t ucTemp;
ucTemp =USART_ReceiveData(USARTx);
如果我接收的是一个数组,这样赋值是不是有问题???
回复

使用道具 举报

发表于 2016-3-17 20:20:52 | 显示全部楼层
USART_ReceiveData(USARTx);  返回的是 接收 数据寄存器 DR的值,8bit
ucTemp =USART_ReceiveData(USARTx); 只是把接收的数值存储在uctemp这个变量,如果你发送的是数组,那么就不断的覆盖uctemp。

如果想要接收成功,就用for循环循环读
回复 支持 反对

使用道具 举报

发表于 2016-3-18 17:36:33 | 显示全部楼层
如果你发送的是数组,后面的数就一直覆盖上一个数。数组得需要for语句的。跟着野火走,吃喝啥都有!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-19 20:05:23 | 显示全部楼层
fire 发表于 2016-3-17 20:20
USART_ReceiveData(USARTx);  返回的是 接收 数据寄存器 DR的值,8bit
ucTemp =USART_ReceiveData(USARTx) ...

火哥,怎么判断接收过程结束呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-19 20:06:12 | 显示全部楼层
lcc12 发表于 2016-3-18 17:36
如果你发送的是数组,后面的数就一直覆盖上一个数。数组得需要for语句的。跟着野火走,吃喝啥都有!

怎么判断接收过程结束呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-19 21:07:46 | 显示全部楼层
11光辉岁月 发表于 2016-3-19 20:06
怎么判断接收过程结束呢?

自问自答!
两种方法:协议法和超时法。
协议法指通讯双方约定数据包中某一特定位置的数据代表数据包长度,或者利用特殊字符作为结束标志。
超时法指数据停止发送若干时间后即认为当前数据包已完成接收。

我用的是加头加尾的方法,即是所说的协议法,收到最后那个数据就是说明这段数据收完
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-19 21:09:33 | 显示全部楼层
fire 发表于 2016-3-17 20:20
USART_ReceiveData(USARTx);  返回的是 接收 数据寄存器 DR的值,8bit
ucTemp =USART_ReceiveData(USARTx) ...

火哥,这样判断接收一组数组完毕靠谱吗?

两种方法:协议法和超时法。
协议法指通讯双方约定数据包中某一特定位置的数据代表数据包长度,或者利用特殊字符作为结束标志。
超时法指数据停止发送若干时间后即认为当前数据包已完成接收。

我用的是加头加尾的方法,即是所说的协议法,收到最后那个数据就是说明这段数据收完
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-23 09:24 , Processed in 0.045375 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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