changjin 发表于 2014-12-6 09:32:38

C2000 中DMC 库函数疑问

DMCLIB 中的cfloat 和cIQmath 这两个库函数有什么区别有没有这方面的文档介绍?
比如cfloat 中的rmp_cntl_calc:
void rmp_cntl_calc(MPCNTL *v)
{       

      if (v->TargetValue != v->SetpointValue)
      {
         v->RampDelayCount += 1.0;
         if (v->RampDelayCount >= v->RampDelayMax)
         {
         if (v->TargetValue >= v->SetpointValue)
         {
            v->SetpointValue += 0.0000305;         // 0.0000305 is resolution of Q15
            if (v->SetpointValue > v->RampHighLimit)
            v->SetpointValue = v->RampHighLimit;         
            v->RampDelayCount = 0;
         }
         else
         {
            v->SetpointValue -= 0.0000305;         // 0.0000305 is resolution of Q15
            if (v->SetpointValue < v->RampLowLimit)
            v->SetpointValue = v->RampLowLimit;         
            v->RampDelayCount = 0;
         }
         }
         
      }
      elsev->EqualFlag = 1;

比如cIQmath中的rmp_cntl_calc:
void rmp_cntl_calc(RMPCNTL *v)
{       
   _iq tmp;
      
   tmp = v->TargetValue - v->SetpointValue;
   
      if (_IQabs(tmp) > _IQ(0.0000305))
      {
         v->RampDelayCount += 1;
         if (v->RampDelayCount >= v->RampDelayMax)
         {
         if (v->TargetValue >= v->SetpointValue)
         {
            v->SetpointValue += _IQ(0.0000305);      // 0.0000305 is resolution of Q15
            if (v->SetpointValue > v->RampHighLimit)
            v->SetpointValue = v->RampHighLimit;         
            v->RampDelayCount = 0;
         }
         else
         {
            v->SetpointValue -= _IQ(0.0000305);      // 0.0000305 is resolution of Q15
            if (v->SetpointValue < v->RampLowLimit)
            v->SetpointValue = v->RampLowLimit;         
            v->RampDelayCount = 0;
         }
         }      
      }
      elsev->EqualFlag = 0x7FFFFFFF;
}
这两个还是有点区别的?

忘哪位大神给我解答一下cfloat 和cIQmath 这两个库函数有什么区别?具体的
如果有这方面的相关文档介绍更好.

Ca_guo 发表于 2014-12-6 11:36:03

前者使用浮点运算,后者使用定点运算,自带的文档应该有介绍的

changjin 发表于 2014-12-6 16:00:59

Ca_guo 发表于 2014-12-6 11:36
前者使用浮点运算,后者使用定点运算,自带的文档应该有介绍的

谢谢了,看明白了
页: [1]
查看完整版本: C2000 中DMC 库函数疑问