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.

[参考译文] CCS/TMS320F28379D:"警告:创建输出段"IQmath"不带段规范"。

Guru**** 2530630 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/697262/ccs-tms320f28379d-warning-creating-output-section-iqmath-without-a-sections-specification

器件型号:TMS320F28379D

工具/软件:Code Composer Studio

我正在尝试使用 epwmregs 生成 spwm 波形。

Epwm1中断 似乎没有响应。 我不确定是由于 IQmath 段警告还是中断语法 错误。

PFA 以下代码:

/**
*生成三相50%占空比方波
*
#include "F28x_Project.h"//器件头文件和示例头文件

#define MATH_TYPE 1
#include "IQmathLib.h"
static unsigned int index;
#pragma DATA_SECTION (sine_table、"IQmathTables");
_iq30 sine_table[512];

void initepwm (void);
中断 void epwm1_ISR (void);

void main (void)

索引= 0;
InitSysCtrl();
Dint;


InitGpio();
EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO0=1;
GpioCtrlRegs.GPAGMUX1.bit.GPIO0 = 0;
GpioCtrlRegs.GPAGMUX2.bit.GPIO31 = 0;
GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO31 = 1;
EDIS;


InitPieCtrl();

CpuSysRegs.PCLKCR2.bit.EPWM1 = 1;

InitPieVectTable();

EALLOW;
PieVectTable.EPWM1_INT =&epwm1_ISR;
EDIS;

IER |= M_INT3;
PieCtrlRegs.PIEIER3.bit.INTx1 = 1;


EALLOW;
CpuSysRegs.PCLKCR0.bit.TBCLKSYNC=0;
EDIS;

EPwm1Regs.ETSEL.bit.INTEN = 1;
EPwm1Regs.ETSEL.bit.INTSEL = 5;
//EPwm1Regs.ETPS.bit.INTCNT = 1;
EPwm1Regs.ETPS.bit.INTPRD = 1;
initepwm();

EALLOW;
CpuSysRegs.PCLKCR0.bit.TBCLKSYNC=1;
EDIS;


EINT;
ERTM;

while (1);

中断空 epwm1_isr()

GpioDataRegs.GPATOGGLE.bit.GPIO31 = 1;
EALLOW;
CpuSysRegs.PCLKCR0.bit.TBCLKSYNC=0;
EDIS;

initepwm();

EALLOW;
CpuSysRegs.PCLKCR0.bit.TBCLKSYNC=1;
EDIS;

GpioDataRegs.GPATOGGLE.bit.GPIO31 = 1;
索引+=1;
if (index > 511) index = 0;

//EPwm1Regs.ETFlG.bit.INT = 0;
EPwm1Regs.ETCLR.bit.INT = 1;
PieCtrlRegs.PIEACX.ALL = PIEACK_Group3;

空 initepwm()

EALLOW;
//------------------------
//| 1 100MHz |对于 TBPRD = 2000、f_SW = 10kHz、
//| TBPRD =- x --- ;| CLKDIV = TB_DIV1且 HSPCLKDIV = TB_DIV1
//| 2 f_SW * CLKDIV * HSPCLKDIV |最大 TBPRD = 65535
//------------------------
EPwm1Regs.TBPRD = 5000;// 25KHz 的定时器周期
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;// CLKDIV = 1
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;// HSPCLKDIV = 1
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;//三角载波的对称模式


EPwm1Regs.ETSEL.bit.INTEN = 1;
EPwm1Regs.ETSEL.bit.INTSEL = 5;
//EPwm1Regs.ETPS.bit.INTCNT = 1;
EPwm1Regs.ETPS.bit.INTPRD = 1;


EPwm1Regs.CMPA.bit.CMPA = EPwm1Regs.TBPRD -_IQsat (_IQ30mpy ((sine_table[index]+_IQ30 (0.9999)))/2、EPwm1Regs.TBPRD)、EPwm1Regs.TBPRD、0);
EPwm1Regs.AQCTLA.bit.CAU = 2;
EPwm1Regs.AQCTLA.bit.CAD = 1;

EDIS;

请帮助我解决这个问题。

谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Akhil、

    您的代码似乎正常。 我要了解的是  

    1. 构建配置(RAM/FLASH)和链接器构建设置中的预定义符号。
    2. 您正在使用的完整链接器命令文件。

    您面临的警告是编译设置和链接器命令文件的组合。 我们将重点介绍这一点。

    -Ritvik

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回答。

    PFA:编译配置




    存储器

    第0页:
    /* begin 用于"引导至 SARAM"引导加载程序模式*/

    开始:origin = 0x000000,length = 0x000002
    RAMM0:origin = 0x000122、length = 0x0002DE
    RAMD0:origin = 0x00B000、length = 0x000800
    RAMLS0:origin = 0x008000、length = 0x000800
    RAMLS1:origin = 0x008800,length = 0x000800
    RAMLS2:origin = 0x009000,length = 0x000800
    RAMLS3:origin = 0x009800,length = 0x000800
    RAMLS4:origin = 0x00A000,length = 0x000800
    复位:origin = 0x3FFFC0,length = 0x000002

    第1页:

    BOOT_RSVD:origin = 0x000002,length = 0x000120 // M0的一部分,引导 ROM 将此用于栈*/
    RAMM1:origin = 0x000400、length = 0x000400 //片上 RAM 块 M1 *
    RAMD1:origin = 0x00B800,length = 0x000800


    RAMLS5:origin = 0x00A800,length = 0x000800

    RAMGS0:origin = 0x00C000、length = 0x001000
    RAMGS1:origin = 0x00D000、length = 0x001000
    RAMGS2:origin = 0x00E000、length = 0x001000
    RAMGS3:origin = 0x00F000、length = 0x001000
    RAMGS4:origin = 0x010000,length = 0x001000
    RAMGS5:origin = 0x011000,length = 0x001000
    RAMGS6:origin = 0x012000,length = 0x001000
    RAMGS7:origin = 0x013000,length = 0x001000
    RAMGS8:origin = 0x014000,length = 0x001000
    RAMGS9:origin = 0x015000,length = 0x001000
    RAMGS10:origin = 0x016000,length = 0x001000
    RAMGS11:origin = 0x017000,length = 0x001000
    RAMGS12:origin = 0x018000,length = 0x001000
    RAMGS13:origin = 0x019000,length = 0x001000
    RAMGS14:origin = 0x01A000,length = 0x001000
    RAMGS15:origin = 0x01B000,length = 0x001000

    CPU2TOCPU1RAM:origin = 0x03F800,length = 0x000400
    CPU1TOCPU2RAM:origin = 0x03FC00,length = 0x000400



    部分

    codestart:> begin,page = 0

    #ifdef __TI_Compiler_version__
    #if __TI_Compiler_version__>=15009000
    .TI.ramfunc:{}> RAMM0,PAGE = 0
    其他
    ramfuncs:>RAMM0 page = 0
    #endif
    #endif

    .text:>>RAMM0 | RAMD0 | RAMLS0 | RAMLS1 | RAMLS2 | RAMLS3 | RAMLS4,page = 0
    .cinit:> RAMM0,page = 0
    .pinit:> RAMM0,page = 0
    switch:>RAMM0,page = 0
    .reset:> reset,page = 0,type = DSECT //未使用,*/

    .stack:>RAMM1,PAGE = 1.
    .ebss:> RAMLS5,PAGE = 1.
    econst:> RAMLS5,page = 1.
    .esysmem:> RAMLS5,page = 1.
    filter_RegsFile:> RAMGS0,PAGE = 1

    RAMS0:>RAMGS0,PAGE = 1
    ramgs1:>RAMGS1,page = 1.

    /*使用 IPC API 驱动程序时需要以下部分定义*/
    组:> CPU1TOCPU2RAM,PAGE = 1

    PUTBUFFER
    PUTWRITEIDX
    GETREADIDX


    组:> CPU2TOCPU1RAM,PAGE = 1

    GETBUFFER:TYPE = DSECT
    GETWRITEIDX:TYPE = DSECT
    PUTREADIDX:TYPE = DSECT



    //IQmathTables:>RAMGS1,page = 0
    /*
    //============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    //文件结束。
    //============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    *

    Beow 是项目设置中的预分头符号的图像

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Akhil SAI"]}
    //IQmathTables:>RAMGS1,page = 0
    [/报价]

    由于这部分代码已注释掉、因此您会收到该警告。 请取消注释、然后尝试运行。 请告诉我、之后您是否会遇到问题。

    Ritvik