0 参考资料
STM32MP13xx参考手册.pdf
1 使用寄存器实现软件复位
1.1 复位电路概述
重点关注下面标红的路线:
通过这条路线可以清楚看到,我们可以通过设置RCC_MP_GRSTCSETR寄存器让RPCTL(复位脉冲控制器)给NRST(硬件复位引脚)一个复位脉冲信号,从而让软件实现硬件复位。
1.2 RCC全局复位控制设置寄存器描述
通过设置RCC_MP_GRSTCSETR寄存器的bit0为1即可通过软件实现硬件复位。
1.3 实践
#define RCC_MP_GRSTCSETR_MPSYSRST_Pos (0U)
#define RCC_MP_GRSTCSETR_MPSYSRST_Msk (0x1UL << RCC_MP_GRSTCSETR_MPSYSRST_Pos) /*!< 0x00000001 */
#define RCC_MP_GRSTCSETR_MPSYSRST RCC_MP_GRSTCSETR_MPSYSRST_Msk /*!< System reset Set by software, cleared by hardware. */
/**
* @brief CPU复位
*
*/
void cpu_reset(void)
{
RCC->MP_GRSTCSETR = RCC_MP_GRSTCSETR_MPSYSRST;
}
stm32MP135的HAL库已经有RCC_MP_GRSTCSETR寄存器的定义,我们只需要将bit0设置为1即可触发硬件复位。