DSP-F2812的C语言--如何使用自己所定义的结构体变量

2019-07-24 16:08发布

在一个".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功能选择
};
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
GG_GG
1楼-- · 2019-07-24 22:01
 精彩回答 2  元偷偷看……
GG_GG
2楼-- · 2019-07-25 02:07
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的程序后就可以使用自己所定义的结构体作变量了...
杉树林罗
3楼-- · 2019-07-25 07:41
楼主有个小疑问:对于芯片每部分外设都应该对应固定的地址,那自己定义的结构体该映射到哪里去?新手初学,有扰见谅。。。
zhangmangui
4楼-- · 2019-07-25 13:19
杉树林罗 发表于 2015-2-9 09:33
楼主有个小疑问:对于芯片每部分外设都应该对应固定的地址,那自己定义的结构体该映射到哪里去?新手初学, ...

你看过CMD没    寄存器最后都是映射到一定的地址上去了
杉树林罗
5楼-- · 2019-07-25 18:34
zhangmangui 发表于 2015-2-9 22:31
你看过CMD没    寄存器最后都是映射到一定的地址上去了

看过了,但就是不知道自己定义的结构体该映射到什么地方去,或者说DSP有专门留给开发者使用的内存映射区域吗?有的话该是在哪里?
zhangmangui
6楼-- · 2019-07-25 23:59
 精彩回答 2  元偷偷看……

一周热门 更多>