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.

[参考译文] MSPM0G1506:BOR 复位后的行为

Guru**** 2402145 points
Other Parts Discussed in Thread: MSPM0G1506

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1506089/mspm0g1506-behavior-after-bor-reset

器件型号:MSPM0G1506

工具/软件:

你好。

我对 BOR 复位后的 MSPM0G1506行为有疑问。

我特意通过操纵电源来引起 BOR 复位。

BOR 电平设置为1、电源从2.3V 更改为2.0V、然后恢复到2.3V。

我能够确认 MAPM0G1506复位、但复位后、它停止响应中断。

当我重新打开电源时、它开始响应中断。

我的问题如下。

1)是否有任何规范会阻止在 BOR 复位后使用中断等功能?

2)如果我将它保留在2.0V,而不是恢复到2.3V, MSP 将如何行为? 它会一直复位吗?

提前感谢您。

Tsuchiya

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

    在 TRM 中: 2.2.3.2欠压复位(BOR)监控器

    If the BOR is in interrupt mode (a threshold level of BOR1-BOR3), and the supply drops below the corresponding
    BORx- level, an interrupt is generated and the BOR circuit automatically switches the BOR threshold level to
    BOR0 to make sure that a BOR- violation is asserted if VDD drops below BOR0-.

    如果您给 BOR1指定了 BOR 电平、则需要检查 MSPM0是否卡在这里

    /* This is the code that gets called when the processor receives an unexpected  */
    /* interrupt.  This simply enters an infinite loop, preserving the system state */
    /* for examination by a debugger.                                               */
    void Default_Handler(void)
    {
        /* Enter an infinite loop. */
        while (1) {
        }
    }

    此外、当电源电压恢复到2.3V 时、BOR1将释放。

    1)是否有任何规范会阻止在 BOR 复位后使用中断等函数?

    BOR0被 BOR 复位、BOR1将生成 NMI。

    BOR 中断是 NMI、 如果您未实现 NMI、M0将以无限循环运行到默认处理程序中。

    2)如果我将其保留在2.0V 而不是将其恢复到2.3V、MSP 将如何运行? 它是否会一直重置?

    NMI 中。

    请添加这两个中断处理程序、并检查 MSPM0何时从2.3降至2.0V、是否会运行到 NMI。

    您可以打开 NMI 中的 LED。

    void NMI_Handler(void)
    {
        __BKPT(0);
    }
    void HardFault_Handler(void)
    {
        __BKPT(0);
    }

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

    嗨、Helic Chi。

    我确认在 BOR1调用 NMI 处理程序。

    我在 NMI 处理程序中创建了一个复位函数来启用 GPIO 中断。
    但是、不会生成 GPIO 中断事件。

    如果我重置电源、则会发生中断事件。


    void NMI_Handler(void)
    {
    	SoftwareReset();
    }
    
    void SoftwareReset( void )
    {
        DL_GPIO_setLowerPinsPolarity(BUTTON_PORT,
    		DL_GPIO_PIN_10_EDGE_RISE_FALL | DL_GPIO_PIN_11_EDGE_RISE_FALL);	
    	
    	// Button INT
    	DL_GPIO_initDigitalInputFeatures(BUTTON_IOMUX,
    		DL_GPIO_INVERSION_DISABLE, DL_GPIO_RESISTOR_NONE,
    		DL_GPIO_HYSTERESIS_DISABLE, DL_GPIO_WAKEUP_DISABLE);
    
    	DL_GPIO_clearInterruptStatus(GPIOA, BUTTON_PIN);
    	DL_GPIO_enableInterrupt(BUTTON_PORT, BUTTON_PIN);
    }

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在 NMI 处理程序中创建了一个复位函数来启用 GPIO 中断。
    但是、不会生成 GPIO 中断事件。

    此功能有什么作用?

    您未启用 GPIOA 的 NVIC 中断控制器。 或者您已经在 main 中启用 NVIC?

    此外、软件复位是该 API 的函数: DL_SYSCTL_resetDevice