上电时在 RCC(复位和时钟控制寄存器)中随机设置标志
Flags getting randomly set in RCC(Reset and Clock Control register) on Power On
我正在研究 MM32Spin05 MCU。上电后,RCC(复位和时钟控制)寄存器中的所有 6 个标志都被设置。
复位后,该寄存器的默认值应为 0X XC000000。
但我观察到它是 0X FC000000。
我没有对看门狗定时器、低功耗模块或 s/w 重置做任何事情。
我有一个要求,如果进行了软件复位,闪存中的某个页面将被清除。但是在启动时,由于我不知道的原因设置了标志,因此闪存页面被清除。
我实际上是在进行电源重置。我正在关闭然后打开 MCU 的电源。在启动时,软件复位标志被设置,因此,根据我的代码,它触发了闪存页面擦除。闪存页面只能在软件复位时擦除,而不是电源复位。 MCU 启动后,我立即打印 RCC_CSR 寄存器值,并看到所有 6 个标志都已设置。
LPWRRSTF
:低功耗复位标志
WDGRSTF
: Window 看门狗复位标志
IWDGRSTF
:独立看门狗复位标志
SFTRSTF
:软件复位标志
PORRSTF
: POR/PDR 重置标志
PINRSTF
:PIN 重置标志
我很困惑,为什么电源重置导致软件重置标志设置?
我被困在这个问题上一个多星期了,对此一无所知。非常欢迎任何帮助或建议。
提前致谢
如手册所述,前 4 位在上电(或引脚)复位时“无关紧要”,它们可以具有 任何值。
只有 PORRSTF
和 PINRSTF
中的 none 被设置,其他位才相关。
即便如此,您也需要仔细阅读手册以了解这些位的情况。可能要做的不仅仅是简单的单比特检查。
我正在研究 MM32Spin05 MCU。上电后,RCC(复位和时钟控制)寄存器中的所有 6 个标志都被设置。 复位后,该寄存器的默认值应为 0X XC000000。 但我观察到它是 0X FC000000。 我没有对看门狗定时器、低功耗模块或 s/w 重置做任何事情。
我有一个要求,如果进行了软件复位,闪存中的某个页面将被清除。但是在启动时,由于我不知道的原因设置了标志,因此闪存页面被清除。 我实际上是在进行电源重置。我正在关闭然后打开 MCU 的电源。在启动时,软件复位标志被设置,因此,根据我的代码,它触发了闪存页面擦除。闪存页面只能在软件复位时擦除,而不是电源复位。 MCU 启动后,我立即打印 RCC_CSR 寄存器值,并看到所有 6 个标志都已设置。
LPWRRSTF
:低功耗复位标志
WDGRSTF
: Window 看门狗复位标志
IWDGRSTF
:独立看门狗复位标志
SFTRSTF
:软件复位标志
PORRSTF
: POR/PDR 重置标志
PINRSTF
:PIN 重置标志
我很困惑,为什么电源重置导致软件重置标志设置?
我被困在这个问题上一个多星期了,对此一无所知。非常欢迎任何帮助或建议。 提前致谢
如手册所述,前 4 位在上电(或引脚)复位时“无关紧要”,它们可以具有 任何值。
只有 PORRSTF
和 PINRSTF
中的 none 被设置,其他位才相关。
即便如此,您也需要仔细阅读手册以了解这些位的情况。可能要做的不仅仅是简单的单比特检查。