This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28388D: 关于Release版本执行IQdiv异常的问题

Part Number: TMS320F28388D

在利用28388D做BLDC无位置传感器控制时,使用了speed_pr.h头文件

其计算转速的宏函数为SPEED_PR_MACRO。

工程具有两个版本,Debug版本和Release版本。

在调试Debug时,SPEED_PR_MACRO的执行是正常的,可以正确计算转速

但是在将工程调整为Release模式,将代码烧录至Flash后,发现SPEED_PR_MACRO计算的转速数据始终为0,从而导致速度环PI控制器饱和。

SPEED_PR_MACRO中计算转速的代码如下:

v.Speed = _IQdiv(v.SpeedScaler,v.EventPeriod);

随后我将其改写为以下形式:

g_speed1.Speed = g_speed1.SpeedScaler * 16777216L / g_speed1.EventPeriod;

就可以正确得到转速数据了。

从以上可以看出,是将代码固化至388Flash后IQdiv的执行出现了问题,然而,工程在Release模式编译没有报告任何错误,请问这是什么原因导致的呢?

开发环境为CCS  Version: 11.1.0.00011,工程配置如下:

由于我使用了C28x_InstaSPIN_BLDC_Lib.lib库,所以C28工作在定点模式下,使用的IQmath库为: