| 比较器清除中断标志位函数为 
 复制代码CMP_ClearFlag();                //清除比较器中断标志
 
 但从函数定义来看CMP_ClearFlag()是将CMPCR1的BIT6置位,而非清除。
 
 复制代码#define CMPCR1_CMPIF_MSK                BIT6
#define CMP_CheckFlag()                 READ_REG_BIT(CMPCR1, CMPCR1_CMPIF_MSK)
#define CMP_ClearFlag()                 SET_REG_BIT(CMPCR1, CMPCR1_CMPIF_MSK)
 
 AiCube自动生成的中断函数如下,这会导致一旦进入中断后就跳不出来了。
 
 复制代码////////////////////////////////////////
// 比较器中断服务程序
// 入口参数: 无
// 函数返回: 无
////////////////////////////////////////
void CMP_ISR(void) interrupt CMP_VECTOR
{
    //<<AICUBE_USER_CMP_ISR_CODE1_BEGIN>>
    // 在此添加中断函数用户代码
    if (CMP_CheckFlag())                //判断比较器中断
    {
        CMP_ClearFlag();                //清除比较器中断标志
    }
    //<<AICUBE_USER_CMP_ISR_CODE1_END>>
}
 
 
 |