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/TM4C123GH6PM:编码问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/604638/ccs-tm4c123gh6pm-problem-about-coding

器件型号:TM4C123GH6PM

工具/软件:Code Composer Studio

大家好、我的代码运行异常。 目前、我在主函数中有几行代码(即"return 0")。 它们永远不会在正常情况下执行。 它们甚至不在主循环中(while (1) 1)。 但是、如果我删除它们、我的 while (1)循环将无法运行。

其中一个"返回0"如下所示:

BTW、我的主循环是一个乒乓缓冲器代码、用于将数据写入 SD 卡。  

我真的很困惑。 我猜可能是 code composer 无法正常工作?  

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

    [引用 user="Han Hao "]我想代码编写器可能无法正常工作?  [/报价]

    不太可能、但您没有给我们足够的时间来猜可能发生的情况。

    Robert

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

    很抱歉、您发现信息太少。 我试图简化这种情况。 下面是有关我的问题的更多信息:
    加电时,我的代码将发出一些 SPI 命令以使从属器件合法化(如图所示,"headstage_init()"函数是其中之一)。 然后检查返回值(如果从器件已成功初始化、它将返回1)以确保初始化正确完成。 如果返回值为0、这意味着有关硬件发生故障的事情、则主函数将返回0并停止。
    现在的问题是、如果我的代码中有"return 0"、那么远远落后于此初始化代码的主循环将失败。 (很抱歉、我之前意识到我犯了一个错误、即我必须删除此"返回0"以确保代码正常工作、但不要将其留在此处。)

    我很确定不会执行该"return 0"、因为发送回我的 PC 的 UART 显示"Headstage 已成功初始化"。

    再说一次、我的主循环是一个乒乓缓冲器代码、用于将数据写入 SD 卡。 (计时器中断将继续向两个缓冲区中的一个发送数据、如果缓冲区已满、主循环将其写入 SD 卡、而另一个缓冲区用于存储数据。)

    如果我在代码中有"return 0"、通过查看发送回 PC 的 UART 字符串、我知道所有的初始化都已完成、代码将一直运行到主循环("return 0"未执行)。 但是、它会卡住、乒乓缓冲器停止工作。

    类似的情况是、如果我向代码中添加类似"GPIOPinWrite()"的内容(如上图所示)、代码也会失败。 我认为这一行代码稍后不会对主循环产生影响。 (我已经确保 SD 卡不使用写入的引脚。) 这就是为什么我猜我的 CCS 有问题、否则我无法理解为什么会发生这种情况。

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

    根据您的描述、我强烈怀疑您的 while 循环有问题。

    怀疑编译器存在错误时的第一条规则是"您错了"

    Robert

    BTW、如果可以、请获取 PC-Lint 的副本。 将其用作编译过程的一部分(在编译之前必须传递 lint),并尽可能地打开错误检测。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢 Robert、我将更仔细地研究我的 while 循环、并使用 PC-Lint。