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.

[参考译文] LAUNCHXL-F28377S:在主程序运行之前、一个用户指示灯亮起、另一个熄灭。 为什么?

Guru**** 2536500 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/613408/launchxl-f28377s-one-user-led-is-on-and-the-other-off-before-main-runs-why

器件型号:LAUNCHXL-F28377S

为什么在 main 运行之前蓝色用户 LED 熄灭、红色用户 LED 亮起? 我希望这两个开关都关闭、因此用户可以根据应用打开它们。

在本视频的15到16分钟之间、我们可以看到红色是如何亮起的、蓝色是如何熄灭的。

https://youtu.be/6_HxKOE9nNM

谢谢你。

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

    何塞、

    感谢您提出问题并观看了很好的视频。

    您看到的是代码和 I/O 引脚之间的速度差异。  当 I/O 引脚改变状态时、引脚电压从一个逻辑状态变为另一个逻辑状态需要有限的时间。  代码中使用的指令编译为"原子"读取-修改-写入"指令、这些指令首先读取引脚状态、对结果执行逻辑 AND 运算、然后将结果写回。  当您快速连续执行其中两个操作时、引脚时序生效、因为指令时间比引脚快。  您可以在此维基网页上阅读有关该技术的更多信息:

    解决方案是使用 NOP 分隔这两条指令、如下所示:

    asm (" NOP");

    或者使用 GPIO 设置/清除/切换寄存器、而不是直接写入 DAT 寄存器。

    但愿这对您有所帮助。

    此致、

    Richard

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢、Richard。 这对我有很大帮助、现在我认为我更好地理解了。 但是、在 main 运行之前、我的代码尚未运行。 在 main 之前发生了什么、使一个 LED 关闭、另一个 LED 打开? 复位后,MCU 进入引导 ROM,然后跳转到 CODE_START,执行某些操作,然后运行 main。 您是否建议在 main 之前、在某些系统初始化中、背靠背操作两个 LED、从而产生您提到的时序问题、以便一个 LED 打开、另一个 LED 关闭? 如果是、最好修复该问题。 此致。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    何塞、

    我解释的时序问题会影响您的代码。 引导 ROM 中没有以这种方式配置 GPIO 的任何内容。

    启动时 I/O 状态不同的原因是 LP 板上的硬件连接。 GPIO13通过电平转换器(U2)并联连接到 QEP 索引引脚、该引脚上有一个上拉电阻器、而 GPIO12则没有此类连接。 这是在启动时使蓝色 LED 保持关闭的原因、否则我认为它们都将打开。 这就是电路板的设计方式。

    此致、

    Richard
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢你。 这就是它的原因。 我只需要确保它们都已关闭、然后再使用它们