关于函数void PowerMonitor( UINT8 s )。有个问题询问一下。
/*******************************************************************************
* 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) 都处于安全模式下


配置R8_BAT_DET_CTRL寄存器是要在安全模式下进行,安全模式打开后有时间要求

image.png

这样写可以避免因为中断导致寄存器配置失败




只有登录才能回复,可以选择微信账号登录