如何使用自己所定义的结构体变量

数字输入输出功能定义的结构体
struct PARAMETER{
   Uint16 VALUE;         
   Uint16 DEFAULT ;
   Uint16 INDEX ;   // can be saved to EEPROM by this
   Uint16 TYPE ;    // 0: cann't be modified when motor running 1: can be modified in anytime
   Uint16 SCALE ;   // 0: VALUE need not recalculate when using   ; >0 Real Value = (VALUE / SCALE);
};

struct DIO_REG{
    struct PARAMETER DIProp; //F3.16,输入端子极性设定
    struct PARAMETER DI1;    //F3.8,输入端子X1功能选择
    struct PARAMETER DI2;    //F3.9,输入端子X2功能选择
    struct PARAMETER DI3;    //F3.10,输入端子X3功能选择
    struct PARAMETER DI4;    //F3.11,输入端子X4功能选择
    struct PARAMETER DI5;    //F3.12,输入端子X5功能选择
    struct PARAMETER DI6;    //F3.13,输入端子X6功能选择
    struct PARAMETER DI7;    //F3.14,输入端子X7功能选择
    struct PARAMETER DI8;    //F3.15,输入端子X8功能选择
   
    struct PARAMETER DOProp; //F3.25,输出端子极性设定
    struct PARAMETER DO1;    //F3.17,输出端子Y1功能选择
    struct PARAMETER DO2;    //F3.18,输出端子Y2功能选择
    struct PARAMETER DO3;    //F3.19,输出端子Y3功能选择
    struct PARAMETER DO4;    //F3.20,输出端子Y4功能选择
    struct PARAMETER DO5;    //F3.21,输出端子Y5功能选择
    struct PARAMETER DO6;    //F3.22,输出端子Y6功能选择
    struct PARAMETER DO7;    //F3.23,输出端子Y7功能选择
    struct PARAMETER DO8;    //F3.24,输出端子Y8功能选择
};

struct USERDIO_BITS{
   Uint16 bit00:1;
   Uint16 bit01:1;
   Uint16 bit02:1;
   Uint16 bit03:1;
   Uint16 bit04:1;
   Uint16 bit05:1;
   Uint16 bit06:1;
   Uint16 bit07:1;
  
   Uint16 bit10:1; //   0: low level active 1: high level active
   Uint16 bit11:1; //   0: low level active 1: high level active
   Uint16 bit12:1; //   0: low level active 1: high level active
   Uint16 bit13:1; //   0: low level active 1: high level active
   Uint16 bit14:1; //   0: low level active 1: high level active
   Uint16 bit15:1; //   0: low level active 1: high level active
   Uint16 bit16:1; //   0: low level active 1: high level active
   Uint16 bit17:1; //   0: low level active 1: high level active
};

union USERDI_REG
{  
   Uint16 word;
   struct USERDIO_BITS bit;
};

union USERDO_REG
{  
   Uint16 word;
   struct USERDIO_BITS bit;
};

struct UserDIO_REGS
{
    union USERDI_REG UserDI_reg;
    union USERDO_REG UserDO_reg;
    struct DIO_REG DIO_reg;
    Uint16 RUN;      //数字输出功能表中,变频器正在运行的标志位
    Uint16 FG;       //数字输出功能表中,频率到达信号的标志位
    Uint16 FGT1;     //数字输出功能表中,频率水平检测信号1的标志位
    Uint16 FGT2;     //数字输出功能表中,频率水平检测信号2的标志位
    Uint16 OL;       //数字输出功能表中,过载信号的标志位
    Uint16 UV;       //数字输出功能表中,欠压脉冲封锁的标志位
    Uint16 EF;       //数字输出功能表中,外部故障停机的标志位
    Uint16 UF;       //数字输出功能表中,到达频率上限的标志位
    Uint16 BF;       //数字输出功能表中,到达频率下限的标志位
    Uint16 STANDBy; //数字输出功能表中,变频器准备好运行的标志位
    Uint16 Fault;    //数字输出功能表中,变频器故障的标志位
};

extern volatile struct UserDIO_REGS UserDIORegs;
void Figure_InputFunction(void); //数字输入函数
void Figure_OutputFunction(void); //数字输出函数
//

定义完后还需要在DSP28_GlobalVariableDefs.c中加入的语句是:

#pragma DATA_SECTION(UserDIORegs,"UserDIORegFile");
volatile struct UserDIO_REGS UserDIORegs;

然后在".cmd"文件中加入的区间定义:

UserDIORegFile     :> PAR_REG, PAGE = 1

**************************************************************************************************************

以上都编写进DSP的程序后就可以使用自己所定义的结构体作变量了...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值