controlsuit的例程中,电机控制程序中的电机运行参数是用宏来定义的,由于实际中要用外部按键或者上位机来实时改变电机参数的。其中有这样的一条语句却无法实现由常量到变量的转换,请看:
#define POLES 2
#define BASE_FREQ 60
se1.BaseRpm = 120*BASE_FREQ/POLES;
以上是controlsuit中的原来语句
当我想用一个变量来代替上面的宏时,编译出错:如下所示
const int16 polesnumber= g_iPara[59]; //极对数
speed1.BaseRpm = 120*(BASE_FREQ/polesnumber );
se1.BaseRpm = 120*BASE_FREQ/polesnumber;
当进行第一条语句替换后进行编译时无问题
当进行到第二条编译后出现如下的怪问题:
错误提示是:Description Resource Path Location Type
<a href="file:/C:/ti/ccsv5/tools/compiler/dmed/HTML/10099.html">#10099-D</a> program will not fit into available memory. placement with alignment/blocking fails for section "IQmath" size 0x11f page 0. Available memory ranges: FLASHA size: 0x1f80 unused: 0x11f max hole: 0x11e F28035_FLASH_HVACI_Sensorless.CMD /AC_sensorless0/cmd line 114 C/C++ Problem
这里是CMD文件的IQmath空间不够了。是不是问题出在:变量不能用这样的方式来乘/除啊?
我该怎么做?