工具/软件:Code Composer Studio
大家好,
自´m上午以来,我面临一种行为,即当我按值调用C++类的方法时,参数值始终以零的形式到达目标方法。
首先,了解钙化结构:
使用方法RunRefSys()可以使用类"ThreePhsSysInput",该类拥有具有方法GetNextPhaseVal()的类Transform。 当前方法
RunRefSys()调用方法GetNextPhaseVal
我已使用调试器逐步执行。 在"ThreePhsSysInput"类中,从由ADC结果提供数据的数组中读取值,并用于调试目的
结果将写入本地vaiable。 当我使用调试器查看u,v,w变量时,它们具有与零不同的特定值。
当调试器到达类“转换”的目标方法“GetNextPhaseVal”时,参数以0.0 的形式到达
我试图通过引用来欺骗它,这只是一个实验,因为你,v,w是当地人。 我在那里观察到第一个指针返回了错误的值。 所以
我插入了一个伪指针作为“GetNextPhaseVal”的第一个参数,如GetNextPhaseVal (Double* dummyPtr,Double* L1,Double* L2,Double* L3),然后用感兴趣地址的指针定位正确的值。 这只是一个n´t,因为这还不是一个尝试
成为解决方案。
请参阅下面的代码。 直到上星期五,它仍然有效,但自从今天上午第一次汇编以来,我得到了这种效果。 我n´t链接器CMD文件中的内容。
难道有什么东西可以造成这只偶然到现在才起作用的救世主吗?
Double ThreePhsSysInput::RunRefSys()
{
double u, v, w;
u =(double)GetU(0);//inserted以便对调试器可见
v =(double)GetU(1);//inserted以便对调试器可见
w =(double)GetSysU(2);//inserted以便对调试器可见
,Getrefv, Getv, Phu}
双转换:GetNextPhaseVal (双L1,双L2,双L3)
{
双phaseDiff;
双ret;
//双偏移=(L1-L2)+(L2-L3)+(L3-L1);
双当前相,dervPhase,avrgdervPhase,pllPhase;
双posDiff1,posDiff2,posDiff3,最大,差分;
Diff = L1+L2+L3;