This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

请问怎么编写宏在DP lib



如题,我参考了一下 c28x digital power library这个文档,我的板子是f28m35,里面是Solar_HV_DCAC的程序。我现在想写一个类似CNTL_2P2Z的宏,首先写了一个CNTL_FDB.asm, c28.c里的程序在以下几处也改动了

// CONTROL_FDB 
extern volatile long *CNTL_FDB_Ref2; // instance #1
extern volatile long *CNTL_FDB_Out2; // instance #1
extern volatile long *CNTL_FDB_Fdbk2; // instance #1
extern volatile long *CNTL_FDB_Coef2; // instance #1
extern volatile long CNTL_FDB_DBUFF2[5];

#pragma DATA_SECTION(CNTL_FDB_CoefStruct2, "CNTL_FDB_Coef");     //这个是不是还要改别的文件?

struct CNTL_FDB_CoefStruct CNTL_FDB_CoefStruct2; 

//Current loop
CNTL_FDB_Ref2 = &dwInv_Curr_Ref;
CNTL_FDB_Out2 = &dwInv_Curr_LoopOut;
CNTL_FDB_Fdbk2 = &dwInv_Current_1;
CNTL_FDB_Coef2 = &CNTL_FDB_CoefStruct2.b2;

系数的结构和定义我就没放,那部分应该没问题,按着CNTL_2P2Z弄得

然后,我又改了ISM文件,首先加了一句就有错(下面这句),说unexpected trailing,我不知道是不是哪我没定义好,还是需要include什么?

.include "CNTL_FDB.asm"  

最后,我想问一下,是不是c28.cmd文件也要改,可以指导一下原则吗? 写一个类似的CNTLFDBRAM : origin = ?, length = 0x000030,dataRAM 的起点可以改的靠后些吗,然后我能加上我的这个。

PAGE 0: /* Program Memory */
/* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */
RAML0 : origin = 0x008000, length = 0x001000 /* on-chip RAM block L0 */
/*RAML1 : origin = 0x009000, length = 0x001000 on-chip RAM block L1 */

ADCDRVRAM : origin = 0x009000, length = 0x000020
PFCICMDRAM : origin = 0x009020, length = 0x000020
GENSINCOS : origin = 0x009040, length = 0x000020
PWMDRVRAM : origin = 0x009060, length = 0x000020
CNTL2P2ZRAM : origin = 0x009080, length = 0x000030
dataRAM1 : origin = 0x0090b0, length = 0x000010
CNTL2P2ZBUFF : origin = 0x0090c0, length = 0x000030
DLOG : origin = 0x009100, length = 0x000020
dataRAM : origin = 0x009120, length = 0x000ee0

  • #pragma DATA_SECTION(CNTL_FDB_CoefStruct2, "CNTL_FDB_Coef");     ,不需要改别的文件,在CMD中把CNTL_FDB_Coef 设置适当的内存地址就好

    .include "CNTL_FDB.asm"  问题在于include只能是.h后缀的头文件,asm文件不能用include

    CNTLFDBRAM : origin = ?, length = 0x000030 的意思就是有个CNTLFDBRAM 的函数或者变量,放在内存起始地址origin,长度lenth的空间中