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/TMS320F28335:警告:1. 函数"InitEQep1Gpio"隐式声明、#161-D 声明与以前的&quot 不兼容;InitEQep1Gpio"(在第50行声明)

Guru**** 2584465 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/651582/ccs-tms320f28335-warning-1-function-initeqep1gpio-declared-implicitly-161-d-declaration-is-incompatible-with-previous-initeqep1gpio-declared-at-line-50

器件型号:TMS320F28335

工具/软件:Code Composer Studio

尊敬的先生:

      我是 Mahesh K Joshi。 我使用 了 InitEQep1Gpio(),我编写了 funion 原型,还编写了 extern 以访问 该文件,但它显示以下警告  

警告:

#161-D 声明与之前的"InitEQep2Gpio"(在第54行声明)不兼容

#225-D  函数"InitEQep1Gpio"隐式声明

 

请建议我如何纠正上述警告

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

    您是否在源文件中包含了头文件 DSP2833x_GlobalPrototypes.h? 这具有函数原型、包括此内容应消除警告。

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

    我已经尝试过上述操作、未删除 WARINGS  

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

    如果可能、您能否在调用 eQEP 函数的位置共享源文件。

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

    void main (void)

    //步骤1. 初始化系统控制:
    // PLL、安全装置、启用外设时钟
    //此示例函数位于 DSP2833x_SYSCTRL.c 文件中。
    InitSysCtrl();

    //步骤2. 初始化 GPIO:
    //此示例函数位于 DSP2833x_GPIO.c 文件和中
    //说明了如何将 GPIO 设置为其默认状态。
    InitGpio();//针对此示例跳过

    //在这种情况下、只为 eQEP1和 ePWM1初始化 GPIO
    //此函数位于 DSP2833x_eQEP.c 中
    InitEQep1Gpio();
    InitEPwm1Gpio();
    EALLOW;

    GpioCtrlRegs.GPADIR.bit.GPIO2 = 1;// GPIO4作为输出模拟索引信号
    GpioDataRegs.GPACLEAR.bit.GPIO2 = 1;//通常为低电平
    EDIS;

    //步骤3. 清除所有中断并初始化 PIE 矢量表:
    //禁用 CPU 中断
    Dint;

    //将 PIE 控制寄存器初始化为默认状态。
    //默认状态为禁用所有 PIE 中断和标志
    //被清除。
    //此函数位于 DSP2833x_PIECTRL.c 文件中。
    InitPieCtrl();

    //禁用 CPU 中断并清除所有 CPU 中断标志:
    IER = 0x0000;
    IFR = 0x0000;

    //使用指向 shell 中断的指针初始化 PIE 矢量表
    //服务例程(ISR)。
    //这将填充整个表,即使是中断也是如此
    //在本例中未使用。 这对于调试很有用。
    //可以在 DSP2833x_DefaultIsr.c 中找到 shell ISR 例程
    //此函数可在 DSP2833x_PieVect.c 中找到
    InitPieVectTable();

    //此示例中使用的中断被重新映射到
    //此文件中的 ISR 函数。
    EALLOW;//这是写入 EALLOW 受保护寄存器所必需的
    PieVectTable.EPWM1_INT=&prdTick;
    PieVectTable.EQEP1_INT=&EQEP1_UTO_ISR;
    EDIS;//这是禁止写入 EALLOW 受保护寄存器所必需的

    //步骤4. 初始化所有器件外设:
    initEpwm();//此函数存在于 example_EPwmSetup.c 中

    //步骤5. 特定于用户的代码、启用中断:
    //启用连接到 CPU 定时器0的 CPU INT1:
    IER |= M_INT3;
    IER |= M_INT5;

    //在 PIE:组3中断1中启用 TINT0
    PieCtrlRegs.PIEIER3.bit.INTx1 = 1;
    PieCtrlRegs.PIEIER5.bit.INTx1 = 1;
    //启用全局中断和更高优先级的实时调试事件:
    EINT;//启用全局中断 INTM
    ERTM;//启用全局实时中断 DBGM

    // long int new_pos;
    //new_pos = EQep1Regs.QPOSLAT;

    POSSPEED_Init();

    // qep_posspeed.init(&qep_posspeed);

    for (;;)

    count=count;

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

    我无法重现警告。 是否确定保存了必要的头文件? 如果包含头文件 DSP28x_Project.h、那么在 main.c 中就足够了。
    您似乎已经为初始化 API 添加了自己的函数原型。 这不是必需的、因为原型已经包含在 DSP2833x_GlobalPrototypes.h 头文件中、该头文件是上述头文件的一部分。

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

    您是否能够解决此问题?
    如果问题已解决、请单击验证答案按钮

    谢谢、此致、
    Veena