f2812的语言与标准c不同,DSP-F2812的C语言心得记录

该博客介绍了在DSP程序中用于数字输入输出功能的结构体定义,包括PARAMETER结构体,DIO_REG结构体以及USERDIO_BITS联合体等,详细说明了各成员变量的作用和用途。同时,还展示了如何在全局变量中声明和分配内存空间,并提供了相应的函数声明,如Figure_InputFunction和Figure_OutputFunction,用于处理数字输入和输出功能。
摘要由CSDN通过智能技术生成

以下是我在一个".h"文件中定义的一个结构体:

数字输入输出功能定义的结构体

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的程序后就可以使用自己所定义的结构体作变量了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值