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.

[参考译文] return 语句执行问题

Guru**** 2587345 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1055604/return-statement-executing-problem

您好:

当我通过 CCS9.2在 F280049上调试程序时、我发现在 function1、function2中、不能执行 return 语句、但可以在 function3和 function4中执行。  您能帮我检查这两个函数之间是否有任何差异吗?

function1:
static Uint16 PfcHeartCounter(Uint16 CountType,Uint16 uCount)
{
    if(CountType == 0)
    {
        uCount = IncreaseCounter(uCount);

    }
    else
    {
        uCount = DecreaseCounter(uCount);
    }
    return uCount;

}


function2:
static Uint16 IncreaseCounter(Uint16 Count)
{
    Count = (Count+1u)&0xFFu;
    return Count;
}


function3:
static Uint16 PfcHeartCounter(Uint16 CountType,Uint16 uCount)
{
    if(CountType == 0)
    {
        uCount = IncreaseCounter(uCount);
        return uCount;

    }
    else
    {
        uCount = DecreaseCounter(uCount);
        return uCount;
    }
}

function4:
static Uint16 IncreaseCounter(Uint16 Count)
{
    Count++;
    if(Count>255)
    {
        Count = 0;
    }
    return Count;
}

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

    您好!  

    您使用的编译器选项是什么?  请阐明无法执行 return 语句-您是指无法在 return 语句中设置断点、还是函数未返回 vaue。

    此致

    Siddharth

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

    问题是函数不返回值。如何向您显示编译器选项?

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

    您好!  

    如果您使用的是 CCS、则可以查看 CCS 工程属性并检查编译器选项。  

    您能否共享具有所有这些函数的 C 文件? 我将在最后尝试一下、看看行为。  

    此致

    Siddharth

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

    e2e.ti.com/.../FullBridgePFCHWTest_5F00_H002_5F00_002_5F00_S000_5F00_003.zipIt's我的整个项目

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

    谢谢、今天我们将为您提供一个试用机会、让您随时了解最新信息。  

    我可以在 F280049 Launch Pad 上运行此代码吗?

    此致

    Siddharth

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

    我没有在 Launch Pad 上运行它、也许您可以帮您尝试一下。

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

    您好!  

    我无法在 Launchpad 上运行您的确切代码、但我尝试 了代码的精简版本、其中仅包含您提到的函数。 我无法重现您看到的问题。  附件是我运行的代码。

    /cfs-file/__key/communityserver-discussions-components-files/81/empty_5F00_driverlib_5F00_main.c

    您能否尝试单步执行代码并查看反汇编、看看表达式窗口中的变量是否正确更新?

    此致

    Siddharth

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

    我尝试单步执行代码,发现只跳过 return 语句,例如,函数 IncreaseCounter(),它以"Count =(Count+1U)&0xFFU;"结尾

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

    您可以尝试在编译器中禁用--opt-for-speed 选项,并查看它是否有用。  

    此外、调试的另一种方法是在 MEMORY 窗口中查看堆栈、因为所有这些变量都将在堆栈上创建。

    此致

    Siddharth