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
前者使用浮点运算,后者使用定点运算,自带的文档应该有介绍的
谢谢了,看明白了
页:
[1]