新人求助关于flash读写看不懂啊!(用于FLASH的变频器实时数据定义及其实现)

2019-03-26 14:55发布

----用于FLASH的变频器实时数据定义及其实现----现在需要定义一个可靠的FLASH内部数据管理方式,方便DSP进行读写数据。代码如下:(代码看不懂)----flash.h----
  1. [/align][align=left]/****************函数声明*******************/[/align]Uint16        SectorErase(Uint16);
  2. Uint16        BlockErase(Uint16);
  3. Uint16        ChipErase(void);
  4. void        FlashRead(int *Ptr, Uint32, Uint16);
  5. Uint16        FlashWrite(int *Ptr, Uint32, Uint16);
  6. void        InitExRam(void);
复制代码
----flash.c----

  1. /*****************头文件********************/
  2. #include "DSP2833x_Device.h"     // DSP2833x Headerfile Include File
  3. #include "DSP2833x_Examples.h"   // DSP2833x Examples Include File
  4. #include "flash.h"

  5. /****************宏定义*****************/
  6. //#define         SST_ID                        0x00BF         /* SST Manufacturer's ID code   */
  7. //#define         SST_39VF800A        0x2780         /* SST39VF800/SST39VF800A device code */
  8. #define                TimeOutErr                 1
  9. #define                VerifyErr                 2
  10. #define                WriteOK                         0
  11. #define                EraseErr                 3
  12. #define                EraseOK                         0                       
  13. #define                SectorSize                 0x800
  14. #define                BlockSize                 0x8000


  15. #pragma DATA_SECTION(EX_RAM_DATA,".exramps")  //定义外部存储数据用的数组;
  16. int EX_RAM_DATA[8192];

  17. /***************全局变量定义****************/
  18. unsigned int *FlashStart = (unsigned  int *)0x100000;//flash的首地址

  19. /*---------------------------------------------------------------------
  20. 函数原型:Uint16 SectorErase(Uint16        SectorNum)
  21. 函数名称:Flash段擦除
  22. 函数功能:以段为单位擦除Flash
  23. 入口参数:SectorNum---段号                    
  24. 出口参数:0---正确 1---超时 3---错误
  25. 作    者:
  26. 日    期:
  27. ----------------------------------------------------------------------*/
  28. Uint16        SectorErase(Uint16 SectorNum)
  29. {
  30.         Uint16        i,Data;
  31.         Uint32        TimeOut;

  32.         *(FlashStart + 0x5555) = 0xAAAA;
  33.         *(FlashStart + 0x2AAA) = 0x5555;
  34.         *(FlashStart + 0x5555) = 0x8080;
  35.         *(FlashStart + 0x5555) = 0xAAAA;
  36.         *(FlashStart + 0x2AAA) = 0x5555;
  37.         *(FlashStart + SectorSize * SectorNum) = 0x3030;

  38.         i = 0;
  39.         TimeOut = 0;
  40.         while(i<5)
  41.         {
  42.                 Data = *(FlashStart + SectorSize * (SectorNum + 1) -1);
  43.                 if        (Data == 0xFFFF)        i++;
  44.                 else        i=0;
  45.                 if ( ++TimeOut>0x1000000)       
  46.                         return (TimeOutErr);
  47.         }

  48.         for        (i=0;i<SectorSize;i++)       
  49.         {
  50.                 Data = *(FlashStart + SectorSize * SectorNum +i);
  51.                 if (Data !=0xFFFF)        return (EraseErr);
  52.         }

  53.         return  (EraseOK);                                                                                       
  54. }

  55. /*---------------------------------------------------------------------
  56. 函数原型:Uint16 BlockErase(Uint16 BlockrNum)
  57. 函数名称:Flash块擦除
  58. 函数功能:以块为单位擦除Flash
  59. 入口参数:BlockNum---段号                    
  60. 出口参数:0---正确 1---超时 3---错误
  61. 作    者:
  62. 日    期:
  63. ----------------------------------------------------------------------*/               
  64. Uint16        BlockErase(Uint16 BlockNum)
  65. {
  66.         Uint16        i,Data;
  67.         Uint32        TimeOut;
  68.                        
  69.         *(FlashStart + 0x5555) = 0xAAAA;
  70.         *(FlashStart + 0x2AAA) = 0x5555;
  71.         *(FlashStart + 0x5555) = 0x8080;
  72.         *(FlashStart + 0x5555) = 0xAAAA;
  73.         *(FlashStart + 0x2AAA) = 0x5555;
  74.         *(FlashStart + BlockSize * BlockNum + 1) = 0x5050;

  75.         i = 0;
  76.         TimeOut = 0;
  77.         while(i<5)
  78.         {
  79.                 Data = *(FlashStart +  BlockSize * (BlockNum +1));
  80.                 if        (Data == 0xFFFF)        i++;
  81.                 else        i=0;
  82.                 if ( ++TimeOut>0x1000000)       
  83.                         return (TimeOutErr);
  84.         }

  85.         for        (i=0;i<SectorSize;i++)       
  86.         {
  87.                 Data = *(FlashStart + BlockSize * BlockNum +i);
  88.                 if (Data !=0xFFFF)        return (EraseErr);
  89.         }

  90.         return  (EraseOK);                                                                                                                       
  91. }

  92. /*---------------------------------------------------------------------
  93. 函数原型:Uint16 ChipErase(void)
  94. 函数名称:Flash全部擦除
  95. 函数功能:擦除Flash
  96. 入口参数:无                    
  97. 出口参数:0---正确 1---超时 3---错误
  98. 作    者:
  99. 日    期:
  100. ----------------------------------------------------------------------*/                               
  101. Uint16        ChipErase(void)
  102. {
  103.         Uint16        Data;
  104.         Uint32        TimeOut,i;
  105.                                        
  106.         *(FlashStart + 0x5555) = 0xAAAA;
  107.         *(FlashStart + 0x2AAA) = 0x5555;
  108.         *(FlashStart + 0x5555) = 0x8080;
  109.         *(FlashStart + 0x5555) = 0xAAAA;
  110.         *(FlashStart + 0x2AAA) = 0x5555;
  111.         *(FlashStart + 0x5555) = 0x1010;
  112.                
  113.         i = 0;
  114.         TimeOut = 0;
  115.         while(i<5)
  116.         {
  117.                 Data = *(FlashStart +  0x3FFFF);
  118.                 if        (Data == 0xFFFF)        i++;
  119.                 else        i=0;
  120.                 if ( ++TimeOut>0x1000000)       
  121.                         return (TimeOutErr);
  122.         }

  123.         for        (i=0;i<0x40000;i++)       
  124.         {
  125.                 Data = *(FlashStart + i);
  126.                 if (Data !=0xFFFF)        return (EraseErr);
  127.         }

  128.         return  (EraseOK);                                                                                       
  129. }
  130.                
  131. /*---------------------------------------------------------------------
  132. 函数原型:Uint16 FlashWrite(int *Ptr, Uint32 RomStart, Uint16 Length)
  133. 函数名称:写Flash
  134. 函数功能:将Ptr所指的Length个数据写入RomStart开始处
  135. 入口参数:Ptr---写入数据指针 RomStart---Flash起始位置  Length---数据长度                  
  136. 出口参数:0---正确 1---超时
  137. 作    者:
  138. 日    期:
  139. ----------------------------------------------------------------------*/
  140. Uint16 FlashWrite(int *Ptr,Uint32 RomStart,Uint16 Length)
  141. {
  142.         Uint32        i,TimeOut;
  143.         Uint16        Data1,Data2,j;

  144.         for        (i=0;i<Length;i++)
  145.         {
  146.                 *(FlashStart + 0x5555) = 0x00AA;
  147.                 *(FlashStart + 0x2AAA) = 0x0055;
  148.                 *(FlashStart + 0x5555) = 0x00A0;
  149.                 *(FlashStart + RomStart + i) = *(Ptr+i);
  150.                 TimeOut = 0;
  151.                 j=0;
  152.                 while(j<5)
  153.                 {
  154.                         Data1 = *(FlashStart + RomStart + i);
  155.                         Data2 = *(FlashStart + RomStart + i);                                                       
  156.                         if        (Data1 == Data2)        j++;
  157.                         else        j=0;
  158.                         if ( ++TimeOut>0x1000000)       
  159.                                 return (TimeOutErr);                                               
  160.                 }                                               
  161.         }
  162.         return  (WriteOK);                               
  163. }

  164. /*---------------------------------------------------------------------
  165. 函数原型:Uint16 FlashRead(int *Ptr, Uint32 RomStart, Uint16 Length)
  166. 函数名称:Flash读
  167. 函数功能:将RomStart开始Length个数据写入Ptr
  168. 入口参数:Ptr---写入数据指针 RomStart---Flash起始位置  Length---数据长度                  
  169. 出口参数:无
  170. 作    者:
  171. 日    期:
  172. ----------------------------------------------------------------------*/
  173. void FlashRead(int *Ptr, Uint32  RomStart,        Uint16        Length)
  174. {
  175.         Uint32        i;

  176.         for        (i=0;i<Length;i++)
  177.         {
  178.                 *(Ptr+i) =  *(FlashStart + RomStart +i);
  179.         }       
  180. }



  181. /*---------------------------------------------------------------------
  182. 函数原型:void InitExRam(void)
  183. 函数名称:初始化外部Ram
  184. 函数功能:将ExRam初始化为0
  185. 入口参数:                  
  186. 出口参数:
  187. 作    者:
  188. 日    期:
  189. ----------------------------------------------------------------------*/
  190. void InitExRam(void)
  191. {
  192.         Uint16        i;

  193.         for        (i=0;i<0xFFFF;i++)
  194.                 EX_RAM_DATA[i] = 0;
  195. }

  196.                                                        
  197. //=========================================NO MORE==============================
复制代码


----para.c----
  1. /*****************头文件********************/
  2. #include "DSP2833x_Device.h"     
  3. #include "DSP2833x_Examples.h"   
  4. #include "parameter.h"
  5. #include "flash.h"


  6. #pragma DATA_SECTION(ParaTable,".ParaTab")
  7. struct PARAMETER_REGS ParaTable;

  8. //read the parameter from the flash;
  9. //if the flash is not empty, then read the parameter from the flash and then run;
  10. //
  11. void ReadParaFromFlash()
  12. {
  13.         int *ParPoint;
  14.         ParPoint = &ParaTable.PowerParReg.uPowerType;       
  15.         FlashRead(ParPoint,0x0,256);
  16. }

  17. /*---------------------------------------------------------------------
  18. 函数原型:WR_Default()
  19. 函数名称:初始化电机参数
  20. 函数功能:第一次向flash写入,以后从flash读取上次参数:
  21. ----------------------------------------------------------------------*/
  22. void  WtiteDefaultToFlash()
  23. {
  24.         int *ParPoint,i;
  25.         ChipErase();
  26.         ParPoint = &ParaTable.PowerParReg.uPowerType;       
  27.         for(i=0;i<256;i++)
  28.         *(ParPoint+i)        = 0x00;

  29.         ParaTable.PowerParReg.uPowerType     = 0;    //电机类型:0:感应电机;
  30.         ParaTable.PowerParReg.uPowerNomFre   = 50;   //电源额定频率  :         实际值,缺省50   HZ(单位);
  31.         ParaTable.PowerParReg.uPowerNomVol   = 380;  //电源额定电压  :  线电压   实际值,缺省380  V (单位)
  32.         ParaTable.PowerParReg.uPowerNomSpeed = 1500; //电源额定转速  :         实际值,缺省1485 RPM (单位)
  33.         ParaTable.PowerParReg.uPOLES         =  2;   //电机极对   :          实际值,缺省2    POLERS(对极)
  34.         ParaTable.PowerParReg.uPowerNomCur   = 30;   //电源额定电流             实际值,    262  A (单位)
  35.         ParaTable.PowerParReg.uPulse         = 80;   //电机编码器的每转脉冲数   实际值,缺省 80 (编码器的每转脉冲数);
  36.         ParaTable.PowerParReg.uRs            = 20;   //20度时电机定子绕组电阻   实际值       20 毫欧;
  37.         ParaTable.PowerParReg.uLs            = 10;   //20度时电机定子绕组漏抗   实际值       10 毫亨;
  38.         ParaTable.PowerParReg.uRr            = 20;   //20度时电机转子绕组电阻   实际值       20 毫欧
  39.         ParaTable.PowerParReg.uLr            = 20;   //20度时电机转子绕组漏抗   实际值       20 毫欧
  40.         ParaTable.PowerParReg.PT1000         = 1000; //电机温度测试用的PT  缺省使用PT1000; 1000表示PT1000;
  41.         ParaTable.PowerParReg.uPPower        = 50;   //电机额定功率             实际值       50  KW
  42.         ParaTable.PowerParReg.uCosPhi        = 85;   //电机额定功率因数         85  % ;      实际百分数
  43.         ParaTable.PowerParReg.uIsd           = 620;  //电机额定励磁电流         标幺值            Q12; 4096表示100%
  44.         ParaTable.PowerParReg.uIsq           = 3900; //电机额定转矩电流         标幺值        Q12:4096表示100%;
  45.         ParaTable.PowerParReg.uTorque        = 300;  //电机额定转矩:NM
  46.         ParaTable.PowerParReg.uGD2           = 100;  //电机飞轮负载一阶转矩
  47.         ParaTable.PowerParReg.uRxs1          = 100;  //电机带的减速齿轮箱传动比  实际数目*100:用于机车;例如200表示2倍增速度;10表示0.1倍增速;
  48.         ParaTable.PowerParReg.uRadius        = 90;   //电机带的飞轮直径          实际值:    90毫米;
  49.         ParaTable.PowerParReg.uForMaxSpeed   = 4096;;//正向最大速度值:Q12; 4096=100%;
  50.         ParaTable.PowerParReg.uBackMaxSpeed  = -4096;//负向最大速度值:Q12:4096=100%
  51.         ParaTable.PowerParReg.uMaxTorque     = 7372; //加速最大转矩限制 Q12:100%=4096;
  52.         ParaTable.PowerParReg.uMinTorque     = -7372;//减速最大转矩限制 Q12:100%=4096


  53.         //VVVF参数设置
  54.         ParaTable.VVVFReg.uAcelTime1        = 4000; //总加速时间: 1=10ms: (0到100%速度用的时间)
  55.         ParaTable.VVVFReg.uAcelTime2        = 4000; //总加速时间: 1=10ms: (100%到150%速度用的时间)
  56.         ParaTable.VVVFReg.uDecTime1         = 4000; //总减速时间: 1=10ms;  (0到100%速度用的时间)
  57.         ParaTable.VVVFReg.uDecTime2         = 4000; //总减速时间: 1=10ms;  (150到100%速度用的时间)
  58.         ParaTable.VVVFReg.uTimeMux          = 1;        //时间系数  =1;时间放大倍数;(对10ms进行放大)

  59.         ParaTable.VVVFReg.uVBoost           = 40;   //启动电压:标幺值Q12;  5%
  60.         ParaTable.VVVFReg.uVol125           = 3687; //电压设定V1:标幺值Q12; 90%
  61.         ParaTable.VVVFReg.uVol150           = 3072; //电压设定V2:标幺值Q12; 75%
  62.         ParaTable.VVVFReg.uVol200           = 1024; //电压设定V3:标幺值Q12; 25%

  63.         ParaTable.VVVFReg.uFreq1                        = 500;                        //1号频率
  64.         ParaTable.VVVFReg.uFreq2                        = 1000;                        //2号频率
  65.         ParaTable.VVVFReg.uFreq3                        = 2000;                        //3号频率
  66.         ParaTable.VVVFReg.uFreq4                        = 2800;                        //4号频率
  67.         ParaTable.VVVFReg.uFreq5                        = 3200;                        //5号频率
  68.         ParaTable.VVVFReg.uFreq6                        = 4096;                        //6号频率

  69.         ParaTable.VVVFReg.uVol1                                = 800;                        //1号电压
  70.         ParaTable.VVVFReg.uVol2                                = 1300;                        //2号电压
  71.         ParaTable.VVVFReg.uVol3                                = 2000;                        //3号电压
  72.         ParaTable.VVVFReg.uVol4                                = 2800;                        //4号电压
  73.         ParaTable.VVVFReg.uVol5                                = 3200;                        //5号电压
  74.         ParaTable.VVVFReg.uVol6                                = 4096;                        //6号电压

  75.     //设置通信参数
  76.         ParaTable.CommReg.uSpeed           =  11520;  //串行通信速率:11520*10;
  77.         ParaTable.CommReg.uDataNum         =  8;      //8个数据位;
  78.         ParaTable.CommReg.uCheckBit        =  0;      //无校验位;
  79.         ParaTable.CommReg.uStopBit         =  1;      //一个停止位;
  80.         ParaTable.CommReg.uSetNum          =  2;      //设备号;
  81.         ParaTable.CommReg.RecvMode         =  3;      //CAN+SCI;
  82.         ParaTable.CommReg.uCanBaud         =  100;    //can speed: 100KBPS;
  83.         ParaTable.CommReg.uCanRecvAddr     =   0;     //CAN接收地址;
  84.         ParaTable.CommReg.uCanSendAddr     =  31;     //can发送地址;

  85.         //设置PI控制器参数
  86.         ParaTable.PIset.KpId               =  2800;    //Q12:id控制比例系数;  4505
  87.         ParaTable.PIset.KiId               =  24;      //q12:id控制积分系数   24
  88.         ParaTable.PIset.KdId               =  10;      //Q12:id控制比例系数
  89.         ParaTable.PIset.Isd_PI_Max         =  4096;    //q12:id_PI输出最大值;
  90.         ParaTable.PIset.Isd_PI_Min         =  -4096;    //q12:id_PI输出最小值

  91.         ParaTable.PIset.KpIq               =  2800;    //q12:iq控制积分系数                4505
  92.         ParaTable.PIset.KiIq               =  24;      //Q12:iq控制比例系数                24
  93.         ParaTable.PIset.KdIq               =  10;      //q12:iq控制比例系数
  94.         ParaTable.PIset.Isq_PI_Max         =  4096;    //q12:iq_PI输出最大值;
  95.         ParaTable.PIset.Isq_PI_Min         = -4096;    //q12:iq_PI输出最小值

  96.         ParaTable.PIset.KpVd               =  1600;    //Q12:Vd控制比例系数;        //7372;
  97.         ParaTable.PIset.KiVd               =  10;     //q12:Vd控制积分系数                //153;
  98.         ParaTable.PIset.KdVd               =  10;      //Q12:Vd控制比例系数
  99.         ParaTable.PIset.Vd_PI_Max          =  4096;    //q12:Vd_PI输出最大值;
  100.         ParaTable.PIset.Vd_PI_Min          =  -4096;   //q12:Vd_PI输出最小值

  101.         ParaTable.PIset.KpVq               =  3500;    //Q12:Vq控制比例系数;        //7372;
  102.         ParaTable.PIset.KiVq               =  30;      //q12:Vq控制积分系数        //153;
  103.         ParaTable.PIset.KdVq               =  10;      //Q12:Vq控制比例系数
  104.         ParaTable.PIset.Vq_PI_Max          =  8192;    //q12:Vq输出最大值;
  105.         ParaTable.PIset.Vq_PI_Min          =  -8192;   //q12:Vq输出最小值


  106.     //变频器电气参数设置
  107.         ParaTable.InvCtlReg.uACInputVol      = 380;           // 变频器交流输入电压380V;
  108.         ParaTable.InvCtlReg.uDCInput         = 540;           // 变频器直流输入电压540V;
  109.         ParaTable.InvCtlReg.uDCInputLim                 = 540;                // 变频器直流最低输入电压540V;
  110.         ParaTable.InvCtlReg.uInputDCCurrent  = 227;           // 变频器直流输入电流227A;
  111. //  ParaTable.InvCtlReg.uDcVolUpper      = 5529;          // 直流电压最高值:135%;Q12;
  112.         ParaTable.InvCtlReg.uDcVolUpper      = 4915;          // 直流电压最高值:120%;Q12;
  113.         ParaTable.InvCtlReg.uDcVolBom        = 3277;          // 直流输入低压值:80%; Q12;
  114. //  ParaTable.InvCtlReg.uDcVolBom        = 3072;          // 直流输入最低值:75%; Q12;
  115.         ParaTable.InvCtlReg.uAcOutputVol     =  380;          // 变频器额定输出交流电压:   实际值380*1.4142;
  116.         ParaTable.InvCtlReg.uACOutputCurrent =  18;           // 变频器额定输出交流电流:   实际值;
  117.         ParaTable.InvCtlReg.uACOutputVolMax  = 4505;        // 输出交流电压最高保护值:110%  -Q12
  118. //        ParaTable.InvCtlReg.uACOutputVolMax  = 3686;        // 测试用,输出90%过压报警
  119.         ParaTable.InvCtlReg.uACOutputVolMax1 = 4710;        // 输出交流电压最高保护值1:115%  -Q12

  120.         ParaTable.InvCtlReg.uACOutputCurMax  = 4915;          //交流输出铙电流  标幺值;4096=100%  Q12
  121.         ParaTable.InvCtlReg.uACOutputCurMax1 = 4915;          //变频器输出电流报警值       标幺值;4096=100%  Q12
  122.         ParaTable.InvCtlReg.uChgStopVol      = 2621;          //变频器d充电结束电压值       标幺值;80%的额定电压合上继电器

  123.         ParaTable.InvCtlReg.uChgWait         =   30;         //充电结束后等待时间         实际数: 单位10ms;
  124.         ParaTable.InvCtlReg.uErrorTemp       =  383;          //变频器保护温度值           实际值; 95℃保护值(550ohm)
  125.         ParaTable.InvCtlReg.uWarringTemp     =   85;          //变频器报警温度值           实际值;
  126.         ParaTable.InvCtlReg.uFanOnTemp       =   45;          //开风机温度:               实际值;
  127.         ParaTable.InvCtlReg.uFanOffTemp      =   40;          //关风机温度:                实际值;
  128.         ParaTable.InvCtlReg.uPwmFreq         = 6400;          //变频器PWM开关周期          实际值: 6400Hz;
  129.         ParaTable.InvCtlReg.uT3Period        =    5;          //变频器外部逻辑控制周期;   1ms;
  130.         ParaTable.InvCtlReg.uACCurrXS        =   50;          //变频器电流传感器系数:     满量程*2; 实际值;//20ohm
  131.         ParaTable.InvCtlReg.uDCVolXS         = 1066;          //变频器直流电压传感器系数:满量程;  实际值;
  132.         ParaTable.InvCtlReg.uACVolabXS       =  635;         //变频器交流AB电压采样对应相传感器系数
  133.         ParaTable.InvCtlReg.uACVolbcXS                 =  637;         //变频器交流BC电压采样对应传感器系数
  134.         ParaTable.InvCtlReg.uFreqXS                     =   55;    //变频器频率旋钮调节器;对50Hz标幺
  135.         ParaTable.InvCtlReg.LosePhaseCurr    =  200;          //5%;

  136.         //变频器运行控制设置
  137.         ParaTable.InvRunCtlReg.uCtlMode        = 1;   //运行模式     :枚举类型0:开环 或者1 闭环
  138.         ParaTable.InvRunCtlReg.uFocMode        = 0;   //运行控制ㄏ抻贔OC模式):枚举类型:0 转速闭环;1 转矩闭环;
  139.         ParaTable.InvRunCtlReg.uFuncEnable     = 0;   //外部程序控制是否允许    :=0:外部程序控制不允许;=1 外部程序控制允许;
  140.         ParaTable.InvRunCtlReg.uSpeedRefSource = 1;   //速度参考值来源:bit0: AI1;  BIT1:AI2;  BIT3:命令给定
  141.         ParaTable.InvRunCtlReg.uTorqRefSource  = 1;          //转矩参考量来源:bit0: AI1;  BIT1:AI2;  BIT3:命令给定
  142.         ParaTable.InvRunCtlReg.uFuncRefSource  = 1;          //外部程控参考值来源      :bit0: AI1;BIT1:AI2;BIT3:命令给定(195);
  143.         ParaTable.InvRunCtlReg.uFuncRealSource = 1;          //外部程控反馈值来源        :bit0: AI1;BIT1:AI2;BIT3:命令给定(196):
  144.         ParaTable.InvRunCtlReg.StartMode       = 0;          //启动/停止方式位  :0: 外部开关启动; 1: 命令给定;控制字中给定
  145.         ParaTable.InvRunCtlReg.DiectionSetMode = 0;          //方向设置方式位   :0: 外部开关设置; 1: 命令设定;
  146.         ParaTable.InvRunCtlReg.uStopMode       = 0;    //停机方式:0:停止PWM,自由停车,1:靠岸停车,按照减速曲线停车;
  147.         ParaTable.InvRunCtlReg.SkipRiskEnable  = 0;           //危险带宽跳过允许位 1:跳过危险频率点;;
  148.         ParaTable.InvRunCtlReg.CMD_FunRef      = 4096;  //命令设定的程控参考值;
  149.         ParaTable.InvRunCtlReg.CMD_VdRef       = 4096; //命令设定的速度参考值;
  150.         ParaTable.InvRunCtlReg.CMD_TorqueRef   = 4096;  //命令设定的转矩参考值;

  151.         FlashWrite(ParPoint,0x0,256);
  152. }

  153. void UpdataPara(int Addr,int Data)
  154. {
  155.         int *ParPoint;
  156.         ParPoint = &ParaTable.PowerParReg.uPowerType;
  157.         *(ParPoint+Addr) = Data;
  158. }
复制代码

Q&A:哪位朋友可以给我讲解一下




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
530小菜
1楼-- · 2019-03-26 19:22
 精彩回答 2  元偷偷看……
ouhaosen
2楼-- · 2019-03-26 23:01
< 能用的吗?

一周热门 更多>