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.

[参考译文] MSP430FR5962:WD 重新启动/使用预定义

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1290582/msp430fr5962-wd-restart-use-of-predefine

器件型号:MSP430FR5962

我使用 CCS v12.2.0、TI v21.6.0.LTS 编译器。

固件需要决定何时发出软件重启。 有些工程配置不需要使用此重启、我有一个针对该选择的工程预定义。 一个工程库决定是否重新启动:

#if !defined (WDtoBMS_MFG_BOARD_TEST)
        if (fault){
             setVMBBRestart(1);
        }
#endif

其中一个工程库中有一个具有此内联函数定义的头文件:

inline void setVMBBRestart(uint8_t input){
    VMBB_doRestart = (input == 1) ? 1:0;
    return;
}

在主循环中:

while (1)
    {
        if  ((isVMBBRestart() == 1)){
             WDTCTL = 0xDEAD;
         }
…..
}

如果不选中预定义、此重新启动将按预期运行。 但是、我无法通过预定义检查使重启生效。 是否有更好的方法发出软件复位? 或者一种更好的方法来避免为某些工程配置编译固件部分?

普里亚

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

    尊敬的 Priya:

    [quote userid="496400" url="~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1290582/msp430fr5962-wd-restart-use-of-predefine 不检查预定义,重新启动即可正常运行。 但是、我无法通过预定义检查使重启生效。 是否有更好的方法发出软件复位? 或者一种不编译某些项目配置的固件部分的更好方法?

    如果您说它不起作用,您说如果您删除了#if!define  并 总是包含您的故障检查 ,它将正确复位,或者说 WDCTL 密码违规中的 PUC 从未发生过?

    使用#ifdef#ifndef 或其等效项是相当标准的做法,当编写必须在多个平台上工作的代码时,所以我认为你不应该离开这种方法。 根据您分享的内容、您对它的看法对我来说也是正确的。 您在哪里在 代码/项目中定义 WDtoBMS_MFG_Board_TEST?  

    对于另一种发出软件复位的方法、如果您想要比 PUC 更高的复位级别、也可以在 PMMCTL0寄存器中写入 PMMSWBOR/POR 位。

    此致、
    布兰登·费舍尔

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

    感谢您的答复。  WDtoBMS_MFG_Board_test 是使用它的工程库的预定义符号。 我开始意识到、完成的测试顺序将不再需要在重新启动分配时使用此预定义。 因此、设备将根据需要工作。