/******************************************************************************* * Function Name : PowerMonitor * Description : 电源监控 * Input : s: ENABLE - 打开此功能 DISABLE - 关闭此功能 * Return : None *******************************************************************************/ void PowerMonitor( UINT8 s ) { if( s == DISABLE ) { R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1; R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2; R8_BAT_DET_CTRL = 0; R8_SAFE_ACCESS_SIG = 0; } else { R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1; R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2; R8_BAT_DET_CFG = 1; // 2.05V - 2.33V R8_BAT_DET_CTRL = RB_BAT_DET_EN; R8_SAFE_ACCESS_SIG = 0; mDelayuS(1); R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1; R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2; R8_BAT_DET_CTRL = RB_BAT_LOW_IE|RB_BAT_LOWER_IE|RB_BAT_DET_EN; R8_SAFE_ACCESS_SIG = 0; } }
为什么这个寄存器R8_BAT_DET_CTRL要设置两次,而且第二次的设置内容还有一个一样的 R8_BAT_DET_CTRL = RB_BAT_DET_EN;
R8_BAT_DET_CTRL = RB_BAT_LOW_IE|RB_BAT_LOWER_IE|RB_BAT_DET_EN;
开关两次寄存器,而不是一次性设置所有参数
R8_SAFE_ACCESS_SIG
是为了避免这个原因吗:此后约 16 个系统主频周期(Tsys) 都处于安全模式下
热门产品 :
CH32V317: 互联型青稞RISC-V MCU