OpenEdv-开源电子网

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

我真是不明白,为什么编的32位减法总是算不对,

[复制链接]

9

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2014-3-12
在线时间
0 小时
发表于 2014-4-19 23:31:05 | 显示全部楼层 |阅读模式
一个输入捕获的程序,计数值周期内溢出一个后flagpp计数值应该是从0加1的但是从计数器里看竟然是6F,然后做16位左移位运算后竟然直接变成零,
在程序里做32位运算只是低16位相加。真心搞不懂,这是怎么回事。
while(1)
{
flagcycle=0x66;   // !=0
TIM_ClearFlag(TIM1, TIM_FLAG_Update);//清溢出标志位可有可无,
flagpp=0x00000000;

if(TIM_GetFlagStatus(TIM1, TIM_FLAG_CC1) == RESET) // 没检测到上升沿
 {
   flagpp=0;
TIM_ClearFlag(TIM1, TIM_FLAG_Update);//清溢出标志位
 }else //检测到上升沿
 {
   TIM_ClearFlag(TIM1, TIM_FLAG_CC1);//清捕获标志位
   TIM1CH3_CAPTURE_VAL1=TIM_GetCapture1(TIM1);   //get=val1
   while(flagcycle)
{
 if(TIM_GetFlagStatus(TIM1, TIM_FLAG_CC1) == RESET) //没检测到第二个上升沿
   {
     if(TIM_GetFlagStatus(TIM1, TIM_FLAG_Update) == SET) //标志位溢出
 {
   TIM_ClearFlag(TIM1, TIM_FLAG_Update);//清溢出标志位
   flagpp++;
 }
     }else
   {
    TIM_ClearFlag(TIM1, TIM_FLAG_CC1);//清捕获标志位
TIM1CH3_CAPTURE_VAL2=TIM_GetCapture1(TIM1); //get=val2
      flagcycle=0; //出循环
if(TIM_GetFlagStatus(TIM1, TIM_FLAG_Update) == SET) //标志位溢出
 {
   TIM_ClearFlag(TIM1, TIM_FLAG_Update);//清溢出标志位
   flagpp++;
 }
}
}
//显示转换算法
if(flagpp==0)
{
  temp0=TIM1CH3_CAPTURE_VAL2-TIM1CH3_CAPTURE_VAL1;
  temp0=temp0&0x0000FFFF;

}else
{
  tryinghard0=flagpp;
  flagpp=flagpp<<16;  //   left_move16bit
  flagpp=flagpp&0xFFFF0000;
  tryinghard3=flagpp;
  temp0=flagpp+TIM1CH3_CAPTURE_VAL2-TIM1CH3_CAPTURE_VAL1;//-0x00F00000; //
  tryinghard1=TIM1CH3_CAPTURE_VAL2-TIM1CH3_CAPTURE_VAL1;
  tryinghard2=0x00010000+TIM1CH3_CAPTURE_VAL2-TIM1CH3_CAPTURE_VAL1;
}
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-4-20 00:06:07 | 显示全部楼层
是不是没初始化为0?
这种问题,用仿真器很好解决哦。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2014-3-12
在线时间
0 小时
 楼主| 发表于 2014-4-20 00:39:29 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
真是检查了每次都更新的清零,弄倒这个点,崩溃了,回宿舍
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-10 04:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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