OpenEdv-开源电子网

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

请问原子哥,通过电脑发送到串口的数据存到哪里了呢?如何把这个数据赋值给一个变量呢?

[复制链接]

3

主题

14

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2016-5-11
在线时间
8 小时
发表于 2016-5-24 10:01:58 | 显示全部楼层 |阅读模式
9金钱

这是出口头文件中的定义

这是出口头文件中的定义

想把串口发送的数据赋给PWM_real

想把串口发送的数据赋给PWM_real
请问数据是存在这个 USART_RX_BUF[USART_REC_LEN]中了吗?怎样赋值给PWM_real呢?

最佳答案

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

电脑如果发送的是ascii码,你就一个一个的转吧 (USART_RX_BUF[x]-'0')*10 就是十位的数 如果是电脑发送的是十六进制数 你就高位右移
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

22

主题

751

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1605
金钱
1605
注册时间
2015-6-10
在线时间
222 小时
发表于 2016-5-24 10:01:59 | 显示全部楼层
电脑如果发送的是ascii码,你就一个一个的转吧

(USART_RX_BUF[x]-'0')*10   就是十位的数

如果是电脑发送的是十六进制数   你就高位右移  <<8 加上地位就可以了


回复

使用道具 举报

29

主题

492

帖子

0

精华

高级会员

Rank: 4

积分
810
金钱
810
注册时间
2016-4-7
在线时间
123 小时
发表于 2016-5-24 12:37:54 | 显示全部楼层
是接收1个数据吗?PWM_real=USART_RX_BUF[0];
回复

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2016-5-11
在线时间
8 小时
 楼主| 发表于 2016-5-24 12:50:50 | 显示全部楼层
xujian468 发表于 2016-5-24 12:37
是接收1个数据吗?PWM_real=USART_RX_BUF[0];

是接收一个数据,比如说300或者500这种,PWM_real=USART_RX_BUF[0]只是把USART_RX_BUF数组的一位赋值给PWM_real吧?
回复

使用道具 举报

29

主题

492

帖子

0

精华

高级会员

Rank: 4

积分
810
金钱
810
注册时间
2016-4-7
在线时间
123 小时
发表于 2016-5-24 12:55:09 | 显示全部楼层
_daisy 发表于 2016-5-24 12:50
是接收一个数据,比如说300或者500这种,PWM_real=USART_RX_BUF[0]只是把USART_RX_BUF数组的一位赋值给PW ...

不是1位,是1个字节8位bit,比如0xaa,0x55,这样1个字节的数据
回复

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2016-5-11
在线时间
8 小时
 楼主| 发表于 2016-5-25 15:53:31 | 显示全部楼层
xujian468 发表于 2016-5-24 12:55
不是1位,是1个字节8位bit,比如0xaa,0x55,这样1个字节的数据

是想发送一个十进制的数,怎样才能显示出来是十进制呢?并且赋值
回复

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2016-5-11
在线时间
8 小时
 楼主| 发表于 2016-5-25 15:56:00 | 显示全部楼层
止天 发表于 2016-5-24 13:45
电脑如果发送的是ascii码,你就一个一个的转吧

(USART_RX_BUF[x]-'0')*10   就是十位的数

如果我要发一个三位数,是不是要这样算:rot_req=(USART_RX_BUF[0]-'0')*100+(USART_RX_BUF[1]-'0')*10+USART_RX_BUF[2]-'0';才能把值转成十进制的并且赋值给rot_req呢?
回复

使用道具 举报

22

主题

751

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1605
金钱
1605
注册时间
2015-6-10
在线时间
222 小时
发表于 2016-5-25 16:12:42 | 显示全部楼层
_daisy 发表于 2016-5-25 15:56
如果我要发一个三位数,是不是要这样算:rot_req=(USART_RX_BUF[0]-'0')*100+(USART_RX_BUF[1]-'0')*10+U ...

是的
百位数这么写安全点((u16)(USART_RX_BUF[0]-'0'))*100
不这么写好像也没事,
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-11 08:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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