TI中文支持网
TI专业的中文技术问题搜集分享网站

关28069 执行 float 条件判断时跑飞

  如下段代码,  在单步执行  if(s>(float_t)5.0)  时,为什么会跑飞,无法单步执行 if(s>(float_t)5.0)  以后的代码??????????????????

float s=(float_t)5.2/(float_t)9.5;
  if(s>(float_t)5.0)
  {
      USER_setParams(&gUserParams);
  }
  gMotorVars.UserErrorCode = USER_getErrorCode(&gUserParams);

Eric Ma:

把if屏蔽了,芯片能跑到 USER_setParams吗?

ERIC

  如下段代码,  在单步执行  if(s>(float_t)5.0)  时,为什么会跑飞,无法单步执行 if(s>(float_t)5.0)  以后的代码??????????????????

float s=(float_t)5.2/(float_t)9.5;
  if(s>(float_t)5.0)
  {
      USER_setParams(&gUserParams);
  }
  gMotorVars.UserErrorCode = USER_getErrorCode(&gUserParams);

rookiecalf:

设置断点,全速运行,看能否到条件内,和条件后的语句

  如下段代码,  在单步执行  if(s>(float_t)5.0)  时,为什么会跑飞,无法单步执行 if(s>(float_t)5.0)  以后的代码??????????????????

float s=(float_t)5.2/(float_t)9.5;
  if(s>(float_t)5.0)
  {
      USER_setParams(&gUserParams);
  }
  gMotorVars.UserErrorCode = USER_getErrorCode(&gUserParams);

sworman chen:

回复 Eric Ma:

Dear ERIC:

可以的,只要一遇到 float 类型 if 语句时 就会跑飞。

  如下段代码,  在单步执行  if(s>(float_t)5.0)  时,为什么会跑飞,无法单步执行 if(s>(float_t)5.0)  以后的代码??????????????????

float s=(float_t)5.2/(float_t)9.5;
  if(s>(float_t)5.0)
  {
      USER_setParams(&gUserParams);
  }
  gMotorVars.UserErrorCode = USER_getErrorCode(&gUserParams);

rookiecalf:

回复 sworman chen:

芯片配置是什么类型的?如果是定点的,试试添加一下C标准库:

#include “math.h”

  如下段代码,  在单步执行  if(s>(float_t)5.0)  时,为什么会跑飞,无法单步执行 if(s>(float_t)5.0)  以后的代码??????????????????

float s=(float_t)5.2/(float_t)9.5;
  if(s>(float_t)5.0)
  {
      USER_setParams(&gUserParams);
  }
  gMotorVars.UserErrorCode = USER_getErrorCode(&gUserParams);

sworman chen:

回复 rookiecalf:

有包含<math.h>   配置如附件,DSP  型号是 28069  是 TI 官方  Motorware 里的示例项目  proj_lab13e

  如下段代码,  在单步执行  if(s>(float_t)5.0)  时,为什么会跑飞,无法单步执行 if(s>(float_t)5.0)  以后的代码??????????????????

float s=(float_t)5.2/(float_t)9.5;
  if(s>(float_t)5.0)
  {
      USER_setParams(&gUserParams);
  }
  gMotorVars.UserErrorCode = USER_getErrorCode(&gUserParams);

sworman chen:

回复 rookiecalf:

你好,有包含#include “math.h” 的,是 motorware 的里的例子——————proj_lab13e

  如下段代码,  在单步执行  if(s>(float_t)5.0)  时,为什么会跑飞,无法单步执行 if(s>(float_t)5.0)  以后的代码??????????????????

float s=(float_t)5.2/(float_t)9.5;
  if(s>(float_t)5.0)
  {
      USER_setParams(&gUserParams);
  }
  gMotorVars.UserErrorCode = USER_getErrorCode(&gUserParams);

Eric Ma:

回复 sworman chen:

你使用了FPU的历程了没?

ERIC

  如下段代码,  在单步执行  if(s>(float_t)5.0)  时,为什么会跑飞,无法单步执行 if(s>(float_t)5.0)  以后的代码??????????????????

float s=(float_t)5.2/(float_t)9.5;
  if(s>(float_t)5.0)
  {
      USER_setParams(&gUserParams);
  }
  gMotorVars.UserErrorCode = USER_getErrorCode(&gUserParams);

sworman chen:

回复 Eric Ma:

Dear ERIC:

目前刚接触 DSP, FPU 的历程还没来得及看,第一个项目将是伺服驱动开发,有些知识理解不是很透彻,所以很想知道原因,谢谢!!

  如下段代码,  在单步执行  if(s>(float_t)5.0)  时,为什么会跑飞,无法单步执行 if(s>(float_t)5.0)  以后的代码??????????????????

float s=(float_t)5.2/(float_t)9.5;
  if(s>(float_t)5.0)
  {
      USER_setParams(&gUserParams);
  }
  gMotorVars.UserErrorCode = USER_getErrorCode(&gUserParams);

Eric Ma:

回复 sworman chen:

 我用F28027F的板子,labo5b历程,测你的代码是没问题的。我用CCS6, 6.4.6的编译器。你用的是什么编译器,工程里是否有添加其他代码,如看门狗?

  如下段代码,  在单步执行  if(s>(float_t)5.0)  时,为什么会跑飞,无法单步执行 if(s>(float_t)5.0)  以后的代码??????????????????

float s=(float_t)5.2/(float_t)9.5;
  if(s>(float_t)5.0)
  {
      USER_setParams(&gUserParams);
  }
  gMotorVars.UserErrorCode = USER_getErrorCode(&gUserParams);

sworman chen:

回复 Eric Ma:

Dear ERIC:

你好,在  Motorware    proj_lab12b以前例程都没问题的,我的编译器是 Version: 6.1.1.00022。

你试一下 proj_lab13a, proj_lab13 是有位置环的,多了 2806xRevB_IQmath_BootROMSymbols.lib ,

赞(0)
未经允许不得转载:TI中文支持网 » 关28069 执行 float 条件判断时跑飞
分享到: 更多 (0)