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.

[参考译文] TMS320F2800157:编译器错误:EPwmxRegs 未定义

Guru**** 2535750 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1419110/tms320f2800157-compiler-errors-epwmxregs-is-undefined

器件型号:TMS320F2800157
Thread 中讨论的其他器件:C2000WARE

工具与软件:

请温柔一点、我是初次为 C2000进行开发并使用 CCS Theia:-)

我让 ChatGPT 为我编写一些 LED 和扬声器驱动程序代码模块。  LED 驱动器用于控制一系列数字寻址 RGB LED、而 Sound 驱动器用于生成驱动 H 桥的音调。  这两个示例的共同问题是它们使用 ePWM 端口(LED 为 ePWM2、Sound 为 ePWM7)、并且编译器给出未定义的错误。

有问题的代码是。 . .

LED:

  //初始化 ePWM2
  EPwm2Regs.TBCTR = 0x0000//清除计时器计数器
  EPwm2Regs.TBPRD =(DEVICE_SYSCLK_FREQ/PWM_FREQUENCY)- 1//将周期设置为800kHz
  EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;//向上计数模式
  EPwm2Regs.TBCTL.bit.PHSEN = TB_DISABLE;// Disable phase loading (禁用相位加载)
  EPwm2Regs.TBCTL.bit.PRDLD = TB_IMMEDIATE;// Load immediate (立即加载)
  EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;// Disable synchronization

声音:

  //初始化 ePWM7
  EPwm7Regs.TBCTR = 0x0000//清除计时器计数器
  EPwm7Regs.TBPRD =(DEVICE_SYSCLK_FREQ/PWM_FREQUENCY)- 1//设置周期
  EPwm7Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;//向上计数模式
  EPwm7Regs.TBCTL.bit.PHSEN = TB_DISABLE;// Disable phase loading (禁用相位加载)
  EPwm7Regs.TBCTL.bit.PRDLD = TB_IMMEDIATE;// Load immediate (立即加载)
  EPwm7Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;// Disable synchronization
在这两个代码块中、它们具有:
#include "device.h"    //主器件专用头文件
#include "GPIO.h"      // GPIO 函数
#include "interrupt.h"  //中断函数
#include "ePWM.h"      // ePWM 函数
#include "driverlib.h"  //确保其中包括必要的 EPWM 函数
求助!  代码中缺少什么?
谢谢(提前)!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!  

    您已共享的代码片段表明它正在使用位域访问寄存器。  在 sucn 情况下,您应该在代码中包含"f280015x_epwm.h"。  

    请尝试添加该头文件、看看它是否可以解决编译问题。  

    此致

    Siddharth

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

    非常感谢您的快速响应!

    好的、我将建议的 Include 语句添加到了代码块中(文件 Sound. C 和 LEDS_RGB。 C)、因此它们都具有:

    //包括和定义
    #include "device.h"    //主器件专用头文件
    #include "GPIO.h"      // GPIO 函数
    #include "interrupt.h"  //中断函数
    #include "ePWM.h"      // ePWM 函数
    #include "f280015x_ePWM.h" // ePWM 位字段定义
    #include "driverlib.h"  //确保其中包括必要的 EPWM 函数
    我现在不再存在这些代码块中许多语句的所有"未定义"错误、但在 LEDS_RGB 块中、它表示:
    #1965:无法打开源文件"f280015x_epwm.h"
    但我没有得到任何这样的错误在声音代码块;有趣的是,在声音代码块包含语句不会给出任何错误,但它也没有下划线它,并提供"跟随链接"飞跨像它与所有其他包含语句.
    如果我注释掉包含在 LEDS_RGB 块中的内容、那么它将返回41个错误、而 Sound 块现在抱怨无法打开源文件。
    这个编译器让我感到困惑。 . . :-(
    也许你可以帮助我解决一个类似的问题,我有我的 LEDS_7Seg.C 代码块. . . 相关代码为:
      //使用数字化亮度调节亮度定时(0-255)
      uint32_t rightnessOnTime =(digitBrightness * 1000000)/(256 * RefreshRate);
      CpuTimer1Regs.PRD.All = rightnessOnTime; //设置计时器周期

       //清除中断标志
      PieCtrlRegs.PIEACK.all = PIEACK_Group1; //确认 PIE 组1
    错误包括:
    #20:标识符"CpuTimer1Regs"未定义
    #20:标识符"PieCtrlRegs"未定义
    #20:标识符"PIEACK_GROU1"未定义
     
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!  

    "f280015x_ePWM.h"位于中 \device_support\f280015x\headers\include 文件夹

    需要在 CCS 的 Project Properties 中指定此路径、 您 可以通过 在 CCS 中右键点击该工程并浏览到 Properties -> Build -> C2000 Compiler -> Include options 来实现该路径。

    此致

    Siddharth

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

    谢谢。 . .

    我尝试添加你提供的声明. . .
    \device_support\f280015x\headers\include
    似乎没有意识到它(没有看到任何东西得到修复)。

    我注意到已经存在的各种条目都有${}类型的语法、因此我尝试了:
    ${ \device_support\f280015x\headers}\include
    这似乎也不起作用:-(

    然后、我尝试了:
    ${c2000Ware\device_support\f280015x\headers}\include
    运气差。

    我不知道它想要我键入什么:-(

    有任何机会,我只能 ZIP 这个项目,并把它发送给你到 un-tang? :-) 在这一点上没有什么专有. . . 我只是想让'driver'代码编译. . . 然后,我将开始"硬件调试"代码(它仍然不会是专有的). . .

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

    您好!  

    我的意思是、您可以在项目设置中使用绝对路径、例如:c:\ti\c2000\C2000Ware_5_03_00_00\device_support_f280015x\headers\include。   

    如果这不起作用、请分享 zip 文件、然后我再看看它。

    此致

    Siddharth

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

    这就是票证:-) 在我的例子中、路径是 C:\ti\C2000Ware_5_03_00_00\device_support\f280015x\headers\include。

    我的最后一个问题在 LED_7seg.c 模块中。

      CpuTimer1Regs.PRD.All = rightnessOnTime; //设置计时器周期
    #20:标识符"CpuTimer1Regs"未定义
      PieCtrlRegs.PIEACK.all = PIEACK_Group1; //确认 PIE 组1
    #20:标识符"PieCtrlRegs"未定义
    #20:标识符"PIEACK_GROU1"未定义
    void main (void){
      InitSysCtrl()    //初始化系统控制
      initGPIO();      //初始化 GPIO
    #225-D:函数"InitSysCtrl"被隐式声明
    非常感谢这里的任何帮助!!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    吉姆  

    您可以在工程中包含"f280015x_device.h"以清除 未定义的"PieCtrlRegs"和"CpuTimer1Regs" 错误

    我建议您查看 C2000Ware 提供的一个位示例

    C:\ti\c2000\C2000Ware_5_03_00_00\device_support\f280015x\examples

    您可以参考 empty_bitfield 工程示例并将生成的代码添加到其中。

    此致

    Siddharth

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

    你是我的!
    添加了#include "f280015x_epwm.h" 修复了标记的5个错误。

    我来看看您提到的"empty_bitfield"示例。

    非常感谢您的帮助!!