OpenEdv-开源电子网

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

求助!USART接受到数据后,需要对数据进行操作,如想要对其进行运算乘以2或者除以2,该怎么写程序?谢谢了

[复制链接]

4

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2014-9-22
在线时间
12 小时
发表于 2014-12-21 21:50:09 | 显示全部楼层 |阅读模式
5金钱
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
//ALIENTEK战舰STM32开发板实验4
//串口实验  
//技术支持:www.openedv.com
//广州市星翼电子科技有限公司 
 int main(void)
 {
u16 RxData;
delay_init();     //延时函数初始化  
    NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(9600); //串口初始化为9600
  while(1)
{
           if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)==SET)//接收数据寄存器非空标志位
  {

   RxData=USART_ReceiveData(USART1);
       USART_SendData(USART1,RxData);
   while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);//等待发送结束
  }
   


}  
 }

最佳答案

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

乘以2   RxData = RxData * 2 ;   接收到数据后直接操作就行
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

28

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
381
金钱
381
注册时间
2014-10-9
在线时间
6 小时
发表于 2014-12-21 21:50:10 | 显示全部楼层
乘以2   RxData = RxData * 2 ;   接收到数据后直接操作就行
拿什么让你自己信服 自己
回复

使用道具 举报

23

主题

78

帖子

0

精华

初级会员

Rank: 2

积分
193
金钱
193
注册时间
2014-10-18
在线时间
1 小时
发表于 2014-12-21 22:28:17 | 显示全部楼层
如果是2的指数背可以用移位操作
回复

使用道具 举报

4

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2014-9-22
在线时间
12 小时
 楼主| 发表于 2014-12-22 09:03:25 | 显示全部楼层
回复【2楼】真的好多巧合:
---------------------------------
用串口调试助手
发送数据 如 123 1 2 3
接收到的是123 1 2 3
但是 加上RxData = RxData * 2 ;后
接收到的数据是bdf@b@d@f
回复

使用道具 举报

4

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2014-9-22
在线时间
12 小时
 楼主| 发表于 2014-12-22 09:07:15 | 显示全部楼层
回复【3楼】笨笨的小马驹爱奔跑:
---------------------------------
具体是怎样的?我是想得到一组数据,再对数据进行操作,就是对各个数乘以一个系数 比如1.3.应该怎么办。是否要将数据存到SD卡或者SRAM中再进行操作呢???如果是,该如何操作。谢谢
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13135
金钱
13135
注册时间
2012-11-26
在线时间
3814 小时
发表于 2014-12-22 09:17:07 | 显示全部楼层
回复【5楼】落叶找到爱:
---------------------------------
数组接收完毕, 再全部乘以2
学无止境
回复

使用道具 举报

28

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
381
金钱
381
注册时间
2014-10-9
在线时间
6 小时
发表于 2014-12-22 10:11:36 | 显示全部楼层
回复【4楼】落叶找到爱:
---------------------------------
       提醒你下     
            单片机接受的是ASCII码值,你需要做进一步处理
            串口助手发送也是这样的:例如发送123,分3次发送的,可能还会有其他结束符的在里面
            提醒到这吧,自己想想,再找些资料
拿什么让你自己信服 自己
回复

使用道具 举报

4

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2014-9-22
在线时间
12 小时
 楼主| 发表于 2014-12-22 16:57:00 | 显示全部楼层
回复【6楼】jermy_z:
---------------------------------
RxData=USART_ReceiveData(USART1);
RxData存储的数据是在哪里呢?能否详细解释下
再开辟一个数组将RxData里的数据存储起来,在对其进行操作么
数组arry,想要存储1024个数据
for{i=0;i++;i<1024

     arry=RxData;
     }
回复

使用道具 举报

4

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2014-9-22
在线时间
12 小时
 楼主| 发表于 2014-12-22 16:59:37 | 显示全部楼层
回复【7楼】真的好多巧合:
---------------------------------
“可能还会有其他结束符的在里面 ”关于这方面的的能否指教一下?
并不能对RxDate直接操作,若是将其存储起来,那样会影响传输的速度吧
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13135
金钱
13135
注册时间
2012-11-26
在线时间
3814 小时
发表于 2014-12-22 17:27:41 | 显示全部楼层
回复【7楼】真的好多巧合:
---------------------------------
谁跟你说接收到的是ASCII码值了?你不可以hex发送么?
学无止境
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13135
金钱
13135
注册时间
2012-11-26
在线时间
3814 小时
发表于 2014-12-22 17:29:55 | 显示全部楼层
回复【9楼】落叶找到爱:
---------------------------------
这么简单的问题,自己思考思考就可以得出答案,思路前面也有了,还纠结的话,真的就没救了,话很难听,但就是这个事实
学无止境
回复

使用道具 举报

28

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
381
金钱
381
注册时间
2014-10-9
在线时间
6 小时
发表于 2014-12-22 17:37:43 | 显示全部楼层
回复【10楼】jermy_z:
---------------------------------
    可以。。
    他说的那个以前做过,用的就是ASCII,处理起来简单些
     不过我现在在做十六进制的,有啥好的建议没。。
拿什么让你自己信服 自己
回复

使用道具 举报

28

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
381
金钱
381
注册时间
2014-10-9
在线时间
6 小时
发表于 2014-12-22 17:40:25 | 显示全部楼层
回复【9楼】落叶找到爱:
---------------------------------
具体的没研究过,当时偷懒了。。
拿什么让你自己信服 自己
回复

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2012-11-8
在线时间
12 小时
发表于 2014-12-25 13:42:46 | 显示全部楼层
上位机和单片机是通过ASCII通信,要么在上位机处理,要么在单片机处理
回复

使用道具 举报

4

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2014-9-22
在线时间
12 小时
 楼主| 发表于 2015-1-14 22:15:15 | 显示全部楼层
回复【14楼】ap0904433:
----------------------------

     RxData=USART_ReceiveData(USART1);
      RxData=2*RxData;
       USART_SendData(USART1,RxData);
用串口调试助手,发送数字1,得到的是b,而不是2.在单片机上怎么处理?谢谢!
回复

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2012-11-8
在线时间
12 小时
发表于 2015-1-15 15:22:30 | 显示全部楼层
回复【15楼】落叶找到爱:
---------------------------------
串口调试助手选择“十六进制发送”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-27 03:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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