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.

[参考译文] 编译器/TMS320F28069:PWM #define 宏函数

Guru**** 2540440 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/595081/compiler-tms320f28069-pwm-define-macro-functions

器件型号:TMS320F28069

工具/软件:TI C/C++编译器

你好

我使用了两个宏函数来管理 PWM 跳闸区域

第一个宏工作.

#define PWM_1_TZ_ON (){EALLOW;                      \
            EPwm1Regs.TZCLR.bit.OST         = 1;\
            EPwm1Regs.TZEINT.BIT.OST        = 1;\
            GpioDataRegs.GPADAT.bit.GPIO19 = 1;\
            逆变器.Status.bits.BuckHT          = 1;\
            EDIS;}

第二个宏不起作用

#define PWM_3_4_ON(){EALLOW;                   \
            GpioDataRegs.GPADAT.bit.GPIO22   = 0;\
            EPwm3Regs.TZCLR.bit.OST            = 1;\
            EPwm4Regs.TZCLR.bit.OST            = 1;\
            EDIS;}

我必须在宏函数之前放置一个断点,然后它才起作用?:?$*?

有人知道为什么这样做?

此致  

OL

原因

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

    您能详细说明一下"不起作用"的含义吗? 宏的哪个部分失败?

    惠特尼

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    宏未被考虑在内、似乎跳转到了程序的其他部分
    OL
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我认为宏本身没有任何问题。 如果您想确保正确插入反汇编代码、则可以查看反汇编代码。

    如果在第二个宏之前的代码中放置一个延迟、它是否具有与断点相同的效果? 我想知道断点提供的延迟是否会导致代码正常工作。

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

    感谢 Whitney 的回答。 今天我将尝试您的两项建议、我将很快通知您。  

    此致

    OL

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Whitney,如何查看 CCS6中的汇编代码过去,我们在 CCS3上打开/关闭了反汇编代码,但在 CCS6上却找不到它?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    调试时,可以转到 View->Disassembly,在执行指令时逐步执行指令。

    如果您只想在运行编译器时将生成的汇编文件保存到文件中、则可以右键单击某个项目、转至 Properties 窗口、然后在 Build->C2000 Compiler->Advanced Options->Assembler Options 下查找--keep_asm 选项。


    惠特尼

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

    您是否曾发现问题是什么?

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

    尊敬的惠特尼:

    不,我找不到解决方案!

    我仍然有问题、我必须放置一个断点来获得预期的组合、否则它会在不考虑宏代码指令的情况下运行(除非我执行了逐步序列)。 我不明白为什么。 我尝试直接在代码中插入宏代码行,它的行为是相同的....  

    我想它真的很受欢迎!  

    OL

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

    您是否曾尝试过我上面关于添加延迟的建议?

    [引用]如果您在第二个宏之前在代码中放置一个延迟、它是否具有与断点相同的效果? 我想知道断点提供的延迟是否会导致代码正常工作。

    谢谢、

    惠特尼