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:在编译器优化级别2中跳过超级循环

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/600457/compiler-tms320c6713b-super-loop-skipped-in-case-of-compiler-optimization-level-2

部件号:TMS320C6713B

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

您好,

我正在使用CCSv7,当我将编译器优化级别提高到高时,将跳过简单的超级循环(无限循环)来闪烁,光标转到main函数中的return语句。 是否有办法告诉编译器不要跳过无限循环???? 还是调试配置问题 (如完全调试,符号调试等)

int主(){

initGPIO ();

而(1){

   GPIO _Val_Reg ^= 1;

}

返回0;

}

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

    GPIO _VAL_Reg需要 为易失性。  

    谢谢,此致,

    -George

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

    #定义 GPIO _VAL_Reg *(volatile unsigned int *) ADDR

    我想问它对无限循环有什么影响????
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它不*定义*为volatile,而是*转换*为volatile。 我不知道编译器,但它肯定让我困惑!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    通过指向易失性的指针访问对象应足以确保循环的主体不是空的。 如果编译器正在优化主体,我们需要查看预处理的测试用例以及所有命令行选项。 您使用的是哪个版本的C6000编译器? (它与CCS版本不同。)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    版本7.4 .................21.
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    解决此问题的唯一方法是使用测试事例。  请 提交一份

    谢谢,此致,

    -George