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.

[参考译文] MSP430FR2676:MSP430FR2676在使用循环延迟时间过长时崩溃

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1019663/msp430fr2676-msp430fr2676-crash-when-using-loop-delay-time-too-long

器件型号:MSP430FR2676
主题中讨论的其他器件:CAPTIVATE-PGMR

大家好、
在 MSPFR2676上使用延迟环路时遇到问题。
当我以适当的方式使用小于1500ms 的延迟时、它可以正常运行。 否则、在 while (1)循环中运行时、它将崩溃。 但是、当我通过 CAPTIVATE-PGMR 在 CSS 上运行调试时、它没有崩溃。
我已经使用了__delay_cycles 和延迟循环与计时器(更新1ms 时为 g_systime++)、它返回相同的结果。

空延迟(uint32_t ms)

uint32_t lastTime = g_systime + ms;
while (g_systime < lastTime);

我认为它与看门狗超时有关、但我已停止看门狗。
我的代码非常简单、我在所有项目中使用的所有函数都可以。  
我认为这只是与时间延迟太长有关、但我不知道原因。
下面显示了简单代码。 创建新项目时的所有配置都是默认配置。
您能给我一些关于这个问题的建议吗? 或者、您也可以使用您的器件来尝试它!
谢谢!

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

    您好!

    您可以尝试使用1MHz 等较慢的时钟频率。

    或者最好的方法是使用计时器为您计算延迟。 您可以参考计时器示例代码来执行该操作。

    此致、

    现金 Hao

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

    谢谢。 1MHz 或16MHz 提供相同的崩溃结果。
    但我提到的问题并不是确切的延迟(这可以使用计时器触发、我可以轻松地执行)。
    我不知道为什么超过1500ms 的循环会导致崩溃、如果它处于调试过程中、它不会崩溃。
    逻辑代码在任何地方都不坏。
    它是否与编译器、配置低功耗、优化相关... 或不是。
    可以帮帮我吗?

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

    您好!

    我知道调试和自由运行之间的差异与时钟同步有关。  调试时、编译器会干预 MCU 时钟。 调试中不会崩溃可能与 MCU 相关、这与使用编译器中的时钟的方式类似。

    此致、

    现金 Hao

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

    最后、当 MCU 自由运行时、导致崩溃的原因是什么?
    我现在还不知道为什么。
    请有人为我解释一下?
    谢谢!