OpenEdv-开源电子网

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

16位数组能不能32位操作

[复制链接]

11

主题

81

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2011-9-4
在线时间
0 小时
发表于 2011-9-4 23:42:07 | 显示全部楼层 |阅读模式
 我在程序中开了一个16位的数组 u16 MODBUS[100];用于和触摸屏MODBUS RTU交换数据,用16位的指针操作正常,但其中有部分数据需要进行32位操作,请教应该如何处理,谢谢!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2011-9-5 08:51:31 | 显示全部楼层
这种问题, 不知道你会不会化零为整?16位边32位.16为变8位,这些都是基本操作啊!!!
不会就去看别人的代码,自己写代码.自己悟出来吧.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

11

主题

81

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2011-9-4
在线时间
0 小时
 楼主| 发表于 2011-9-5 10:49:05 | 显示全部楼层
原子大哥:你的意思是不是这样的:
u16  MODBUS[100];
U32  temp;

temp=MODBUS[0];
temp=temp<<16+MODBUS[1];
但是这样的话,我在中断程序中修改了temp的数据,而MODBUS[0]和MODBUS[1]的数据却没有改变,触摸屏显示出来的数据岂不是错误的了?
回复 支持 反对

使用道具 举报

11

主题

81

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2011-9-4
在线时间
0 小时
 楼主| 发表于 2011-9-5 11:09:10 | 显示全部楼层
怎么没有大师回复啊,新手在线等啊,急啊!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2011-9-5 11:53:08 | 显示全部楼层
回复【4楼】DGZL:
---------------------------------
所以你在中断里面必须修改MODBUS的数据.而不能修改temp这种临时变量.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

11

主题

81

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2011-9-4
在线时间
0 小时
 楼主| 发表于 2011-9-5 12:14:50 | 显示全部楼层
我以前用51的时候是这样做的:在外部扩展的RAM存放MODBUS数据,然后用外部绝对地址和指向外部的指针进行访问,可随意的访问8位,16位和32位,非常方便,我不知道STM32怎么样才能实现这一目的,
我的temp也设定了为全局变量,我如果中断程序中修改了temp的数据,然后再把temp分解为2个16位的数据返还给2个MODBUS,那岂不是很麻烦,我试了指针也不行。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2011-9-5 12:26:07 | 显示全部楼层
你可以选择浪费内存的办法.
全部定义为 16位格式的数据.
也可以将8位数组强制转换为16位的.

u16 * tp=(u16*)MODBUS;
然后 tp[x]就是16位了.地址什么的,自己设计好.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

11

主题

81

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2011-9-4
在线时间
0 小时
 楼主| 发表于 2011-9-5 14:04:09 | 显示全部楼层
没办法,只有选择浪费内存了。
谢谢!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 23:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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