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.

[参考译文] TM4C123GH6PGE:加电时自动运行一个程序

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/782025/tm4c123gh6pge-automatically-run-a-program-on-power-on

器件型号:TM4C123GH6PGE

打开电源后、如何使 Tiva C 自动运行之前下载的程序?

我`sn`t 在一段时间前就已经完成了这项工作、但现在已经不再执行了。  

为了使其再次正常工作、我必须改变什么? (我正在使用 CCS7.4)

BR、

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

    应该始终如此、是否有任何方法可以对器件进行重新编程?

    这是在定制板上还是在 LaunchPad 上?

    让它再次运行的一般答案是重新对它进行编程、因为程序很可能会被覆盖。 您还可以在编程之前尝试下载闪存内容、以查看是否有证据表明已对其重新编程。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    `s 未经修改的 Launchpad。 我已`s 另一个 Launchpad、但存在相同的问题。

    我对这两种模式都执行的唯一精简操作是直接通过 Code Composer Studio 调试我自己的程序。
    当我n`t`s 并退出调试会话时、器件会持续运行、但它将自行启动。

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

    您是否可以将项目发送给我? 如果是、我可以在 LaunchPad 上对其进行测试以进行确认、也可能有助于调试。 您可以使用"插入代码、附加文件等..."将 zip 文件附加到 E2E 上的 CCS 功能。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    发现问题与启动文件有关。

    当我删除我自己的中断处理程序和包含的文件时、程序会在通电后立即开始运行。

    在调试模式下、两个启动文件都可以正常工作。

    您能发现此代码有任何问题吗?  

    非常感谢您的努力!

    请参阅随附的主文件和两个启动文件。

    e2e.ti.com/.../main.cppe2e.ti.com/.../startup_5F00_nonWorking.cppe2e.ti.com/.../startup_5F00_working.cpp

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

    不工作的问题似乎与您在这些 UART ISR 中添加的方式有关。 器件重新启动时、您可能会遇到故障 ISR。 在任何情况下、您都需要正确设置 UART ISR、然后应该修复该问题。

    至于如何做到这一点、我无法根据您提供的内容轻松判断、但我不理解的一件事是您为什么要包含 motor.h 文件。 通常、只要您为 ISR 使用 extern、就不需要在 startup_ccs.c 中添加 include
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢! 发现了问题。 在`s 器 ISR 中调用了函数 MOTOR_EMERGENCY_BRAKE (它是一个无穷大的函数)。 当器件处于调试模式时、n`t 调用复位 ISR、n`t 函数也是如此。 `s 移除了它、现在它正在工作。

    非常感谢!
    BR、
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    啊、我没有注意到这种变化。 为了更详细地说明调试和自由运行之间的区别、在调试情况下、使用代码对器件进行了编程、堆栈指针设置为起始地址、 因此、除非代码本身中的某些内容在您开始运行代码后触发 ResetISR、否则您不会看到 ResetISR 触发。 不过、当您通过下电上电复位器件时、这将触发 ResetISR、这就是移除调试器后发生该事件的原因。

    实际上、您可以通过在调试器中重置器件来检查您是否着陆、我没有尝试过、但理论上您应该能够。 希望此信息对您有所帮助。