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.

[参考译文] 编译器/TMS320C6713B:通过 C 代码访问 ICR、IFR

Guru**** 2392635 points
Other Parts Discussed in Thread: TMS320C6713B

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/795761/compiler-tms320c6713b-accessing-to-icr-ifr-by-c-code

器件型号:TMS320C6713B

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

您好!

我有一个来自使用 TMS320C6713B 的客户的问题。

客户希望清除 ICR 中的单个中断位,如用户指南第5.3.2节所述。
http://www.ti.com/lit/ug/spru733a/spru733a.pdf

该示例显示了汇编代码、但客户需要 C 源代码示例。
我理解以下关键字应用于参考控制寄存器。

extern __cregister volatile unsigned int IFR;
extern __cregister volatile unsigned int ICR;

但我不清楚编译器是否正确生成了 MVC 指令。
例如、在 C 代码下面

ICR = 0x40 


是否已转换为以下汇编代码,包括 NOP (延迟槽)?

MVK 40h、B3
MVC B3、ICR
NOP



谢谢、此致、
田志郎一郎

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

    如果要生成与该器件参考指南中示例5-7相同的代码,则需要编写此 C 代码...

    #include 
    
    (笑声)
    
    
    /*在 ICR 中设置一个位以清除中断*/
    ICR = 0x40;
    /*读取标志寄存器 */
    IFR;
    

    生成的汇编输出类似于...

    MVK S2. 64、B4
    MVC S2. B4、ICR
    NOP 1
    MVC S2. IFR、B4
    NOP 1 

    此声明...

    IFR; 

    (笑声) 是不寻常的。  C 的标准要求、当诸如 IFR 的易失性变量出现时、必须生成代码来读取它。

    谢谢、此致、

    乔治

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

    尊敬的乔治:

    感谢您的快速回复!
    我关闭此项目。

    谢谢、此致、
    田志郎一郎