世纪电源网社区logo
社区
Datasheet
标题
返回顶部
未解决

msp430

[复制链接]
查看: 630 |回复: 2
1
g200407331
  • 积分:107
  • |
  • 主题:1
  • |
  • 帖子:2
积分:107
LV2
本网技师
  • 2011-12-16 15:35:02
10问答币
我现在用p2口来读取一个时变的量,这个量是个32位整形量。所以需要分三次把它给拿进来。定义了一个读取的函数。
如下:INT32 ReadMotorPos(void)
{
INT32 res;
BYTE* cur_byte;
cur_byte = (BYTE*)(&res);

// DisableInterrupt();
P2OUT &= (~BIT7); // nOE
P3OUT |= BIT2; // update
P3OUT &= ~(BIT0 | BIT1 | BIT2);
NOP();
*(cur_byte+3) = CNTRPORTIN; // byte 0
P3OUT |= BIT0;
*(cur_byte+2) = CNTRPORTIN; // byte 1
P3OUT &= ~(BIT0 | BIT1);
P3OUT |= BIT1;
*(cur_byte+1) = CNTRPORTIN;
P3OUT |= BIT0;
*(cur_byte) = CNTRPORTIN;
// EnableInterrupt();
P2OUT |= (BIT7);
return res;
}
BYTE *pPara, pPara1;
INT32 a, b, c;
pPara=(BYTE*)(&a);
pPara1=(BYTE*)(&b);
*((INT32*)(pPara)) = ReadMotorPos();
delay 1s
*((INT32*)(pPara1)) = ReadMotorPos();
c=b-a;
最终通过串口发到电脑上来调试这个c结果发现a, b显示正确,但是c的结果却怎么都不正确呢。因为比如b-a应该等于3的时候
c却得到的结果是一个32位的,而且各位数字都不为零的数字,这有点太夸张了吧。一个3串口顶多得到00 00 00 03吧,最终却得到了一个几万的数字。
lizlk
  • 积分:6600
  • |
  • 主题:15
  • |
  • 帖子:1062
积分:6600
版主
  • 2011-12-16 15:40:51
  • 倒数2
 
数据溢出了吧。
g200407331
  • 积分:107
  • |
  • 主题:1
  • |
  • 帖子:2
积分:107
LV2
本网技师
最新回复
  • 2011-12-16 16:00:21
  • 倒数1
 
问了好多人这个回答还是感觉比较靠谱的,呵呵。
热门技术、经典电源设计资源推荐

世纪电源网总部

地 址:天津市南开区黄河道大通大厦8层

电 话:400-022-5587

传 真:(022)27690960

邮 编:300110

E-mail:21dy#21dianyuan.com(#换成@)

世纪电源网分部

广 东:(0755)82437996 /(138 2356 2357)

北 京:(010)69525295 /(15901552591)

上 海:(021)24200688 /(13585599008)

香 港:HK(852)92121212

China(86)15220029145

网站简介 | 网站帮助 | 意见反馈 | 联系我们 | 广告服务 | 法律声明 | 友情链接 | 清除Cookie | 小黑屋 | 不良信息举报 | 网站举报

Copyright 2008-2024 21dianyuan.com All Rights Reserved    备案许可证号为:津ICP备10002348号-2   津公网安备 12010402000296号