Thread 中讨论的其他器件:UNIFLASH
我将 MCU 置于关断状态、唤醒后、我注意到复位原因设置为“看门狗“。
在我的代码中、我会检查两个复位原因、即 MCU 是经历了下电上电复位还是看门狗复位。
不过、我始终会看到看门狗复位标志会置位、即使 MCU 已完成下电上电复位也是如此。
这是我的代码;
void powershutdown (uint32_t shutdownTime)
{
(void) Power_registerNotify (&hibSignal、PowerCC32XX_Entering_shutdown、
&preHibConfig、(uintptr_t) NULL);
(void) Power_shutdown (0、shutdownTime);
}
在 main 中、我已经检查了复位原因、
内部 main (void)
{
uint32_t resetCause = MAP_PRCMSysResetCauseGet ();
BOARD_INIT ();
initwatchdog();
pwm_init ();
spi_init ();
(void) InitTerm();
uart_print(“\n\n==引导调试信息===\n“);
UART_print(“复位原因寄存器:0x%08X\n“、resetCause);
UART_print(“Individual Flags:\n“);
uart_print(“ PRCM_POWER_ON: %s\n“、(resetCause 和 PRCM_POWER_ON)? “设置“:“清除“);
uart_print(“ PRCM_LPDS_EXIT: %s\n“、(resetCause 和 PRCM_LPDS_EXIT)? “设置“:“清除“);
uart_print(“ PRCM_HIB_EXIT: %s\n“、(resetCause 和 PRCM_HIB_EXIT)? “设置“:“清除“);
UART_PRINT(“ PRCM_WDT_RESET: %s\n“、(resetCause 和 PRCM_WDT_RESET)? “设置“:“清除“);
uart_print(“ PRCM_MCU_reset: %s\n“、(resetCause 和 PRCM_MCU_reset)? “设置“:“清除“);
uart_print(“ PRCM_SOC_RESET: %s\n“、(resetCause 和 PRCM_SOC_RESET)? “设置“:“清除“);
IF ((resetCause 和 PRCM_HIB_EXIT)||(resetCause 和 PRCM_MCU_RESET))
{
UART_print(“非看门狗复位\n“);
}
Else if (resetCause 和 PRCM_WDT_RESET)
{
UART_print(“看门狗复位\n“);
}
Else if (resetCause 和 PRCM_POWER_ON)
{
(void) POWER_REGISTERNotify (&hibSignal、PowerCC32XX_Entering_shutdown、
preHibConfig、(uintptr_t) NULL);
(void) POWER_SHUTDOWN (0、MAX_INT);
}
在调试时、我始终会得到相同的复位原因。
===引导调试信息===
复位原因寄存器:0x00000007
单个标志:
PRCM_POWER_ON:清除
PRCM_LPDS_EXIT:设置
PRCM_HIB_EXIT:设置
PRCM_WDT_RESET:设置
PRCM_MCU_RESET:设置
PRCM_SOC_RESET:设置
HiB 寄存器 0:0x20004000
是否可以清除复位状态。 如果我也执行断电、则只会得到上述复位原因。
