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.

[参考译文] TMS320F28075:读取 IFR 时收到警告

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1035774/tms320f28075-reading-ifr-getting-a-warning

器件型号:TMS320F28075

香榭丽舍

我的客户正在通过以下功能读回 IFR 以进行诊断。 但我们会收到警告。 需要做些什么来处理此警告?

谢谢、

Brian

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

    Brian、

    虽然 IFR 将存储在 AL 寄存 器中、但您认为仍需要通知编译器 funIFR 将接受该值(即使我们知道它是这样)。  是否可以为 funIFR()函数尝试如下所示的操作:

    __asm(" .def _funIFR\n"
              " .global  _funIFR\n"
              "_funIFR:\n"
              " PUSH IFR\n"
              " POP AL\n"
              " LRETR\n");

    最棒的

    Matthew

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="3205100" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1035774/tms320f28075-reading-ifr-getting-a-warning ]\n 我的客户通过以下函数读回 IFR 进行诊断。 [/报价]

    第 6.5.2 TMS320C28x 优化 C/C++编译器 v21.6.0.LTS 用户指南的__cregister 关键字 说明了如何通过__cregister 关键字访问 IFR,并具有以下示例代码:

    extern cregister volatile unsigned int IFR;
    extern cregister volatile unsigned int IER;
    extern int x;
    main()
    {
     IER = x;
     IER |= 0x100;
     printf("IER = %x\n", IER);
     IFR &= 0x100;
     IFR |= 0x100; 

    即应该能够尝试上述函数、而不是 funIFR 函数。

    我尚未对此进行测试。

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

    切斯特、

    感谢您提出/展示这一点。  我一直在查看汇编内在函数的第7.6节、很惊讶我们没有上面发布的内容、所以我走了蛮力破解的路线。

    我同意您的方法更清洁、可避免 C 生成的 ASM 受到任何潜在干扰、并且已经过验证!  

    Brian、

    我建议您的客户使用 Chester 指出的方法。

    最棒的

    Matthew