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.

[参考译文] CCS/MSP430F5359:在中断内调用函数

Guru**** 2526700 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/740687/ccs-msp430f5359-calling-function-inside-interrupt

器件型号:MSP430F5359

工具/软件:Code Composer Studio

大家好、我厌倦了通过 传递 FourSec_Counter (USER_2)等值来调用计时器中断中的函数;编译器对它不满意、建议我内联它、我该怎么做? 或者可能的解决方案是什么?

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

    您好、Kary、

    最好不要在 ISR 中调用冗长的函数,而是在 main()中尽可能多地使 ISR 保持较短和快速。 如果在 ISR 中触发四秒计数器、我可以看到编译器警告的原因。 相反,我建议从 main()启动一个四秒的计时器,然后在经过四秒后使用计时器 ISR 来触发。

    此致、

    James

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    但是、如何内联函数?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    若要回答您的问题:使用"inline"关键字声明您的函数、如下所示:
    >静态内联 void SmeFunction (void){somestuff;}
    当然、它不必是"无效"、但我确实建议它是"静态"、除非有强烈的理由不这样做。

    至於更大的问题:(1)[个人意见:]你应以一粒盐来接受 ULP 的意见。 它试图提供帮助、但我经常不同意建议。 (2)正如 James 所说的,如果你在 ISR 中做了很多工作,你应该考虑把这个工作移到 main()中。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    当我调用该函数时、它就像常规函数调用一样、或者我也需要使用内联函数?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    将其称为普通函数。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    内联之后、它也显示出一些问题
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它显示了什么问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    函数声明:

    静态内联 void FourSec_Counter (unsigned int up_dim)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这些不是错误(也不是警告)、而是"建议"。 您可以安全地忽略它们;您甚至可以在 Build Settings 中禁用它们。 我不知道为什么它们仍然出现在函数的"内联"之后。

    这些是您收到的唯一消息吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我对屏幕进行了拼接、以便您可以看到函数声明和函数、我做了什么事情吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我建议您忽略(和/或禁用) ULP 建议、因为它显然不正确。

    是否存在任何真正的编译器警告或错误? 您的程序是否正常工作?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    ETA:

    没关系、我没有看到休息时间。 如果您提出要求、编译器不内联的原因有很多、您能否展示整个函数?

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

    您好、Kary、

    请向我们提供 CCS、TI 编译器版本和您的项目优化设置、如下所示:

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