#pragma CODE_SECTION(ggGetRotorPosAndWr, "ramfuncs"); void ggGetRotorPosAndWr() { static unsigned int DisCounter=0; static float DisSumRPM=0,gFluxAngK=0.0; if(1) { float tmpVal; tmpVal=gResolverValue-gResolverOffset;//tmpVal=resol_posi-gResolverOffset; if(tmpVal<0) { tmpVal+=4096; // tmpVal+=65536; } if((gDebugType>3.5)&&(gDebugType<9.5)) { //gFluxAng=0.00613*tmpVal;//0.0046*tmpVal;//tmpVal/4096*PI2*3; //gFluxAng=0.0046*tmpVal; // gFluxAngK=0.001*0.01526*gPn*PI2; gFluxAngK=0.001*0.24414*gPn*PI2; gFluxAng=gFluxAngK*tmpVal; }
时间: 2024-03-18 21:45:59 浏览: 50
C++ 中pragma once 与 #ifndef _XXX_H_ #define _XXX_H_的区别
5星 · 资源好评率100%
这是 ggGetRotorPosAndWr 函数的具体实现代码。
该代码中有一个条件判断语句 if(1),这个条件永远成立,因此这个语句块中的代码会一直执行。
语句块中定义了一个 float 类型的变量 tmpVal,并将其赋值为 gResolverValue 减去 gResolverOffset。接着,如果 tmpVal 小于 0,则将其加上 4096,保证 tmpVal 的值在 [0, 4096) 的范围内。
之后,如果全局变量 gDebugType 的值在 3.5 和 9.5 之间,则执行花括号内的代码块。该代码块中,gFluxAngK 的值被赋值为 0.001 乘以 0.24414 乘以 gPn 乘以 PI2,gFluxAng 的值被赋值为 gFluxAngK 乘以 tmpVal。其中,PI2 是圆周率的两倍,gPn 和 gResolverOffset 也是全局变量。
这段代码的作用是计算转子位置和机械转速,并将计算结果存储到相应的变量中。
阅读全文