// ============================================================================= // 函数功能:__P1020PicTimer_EnInt // 使能定时器中断 // 输入参数:timer,待操作的定时器 // 输出参数: // 返回值 :true成功false失败 // 说明 : // ============================================================================= bool_t __P1020PicTimer_EnInt(struct tagP1020PicTimerHandle *timer) { if(timer->timerstate & CN_TIMER_ENUSE) { timer->timerstate = (timer->timerstate)| (CN_TIMER_ENINT); return Int_ContactLine(timer->irqline); } else { return false; } }
//----直接允许实时中断线------------------------------------------------------- //功能:本函数是int_disable_real_line()的姊妹函数,调用本函数使中断线的使能计数 // 器归零,并接通中断线 //参数:ufl_line //返回:无 //------------------------------------------------------------------------------ bool_t Int_EnableRealLine(ufast_t ufl_line) { if( (ufl_line > CN_INT_LINE_LAST) || (tg_pIntLineTable[ufl_line] == NULL) ) return false; if(tg_pIntLineTable[ufl_line]->int_type == CN_ASYN_SIGNAL) return false; tg_pIntLineTable[ufl_line]->en_counter = 0; tg_int_global.enable_bitmap[ufl_line/CN_CPU_BITS] |= 1<<(ufl_line % CN_CPU_BITS); Int_ContactLine(ufl_line); return true; }
//----恢复保存的异步信号中断线状态--------------------------------------------- //功能:本函数是int_save_line()的姊妹函数,调用本函数使禁止次数减少,调 // 用一次int_save_line是禁止次数增加。 // 当次数减至0时激活中断线,否则简单减1 //参数:ufl_line //返回:无 //注: 本函数不允许在实时中断ISR中调用,若调用直接返回false。 //----------------------------------------------------------------------------- bool_t Int_RestoreAsynLine(ufast_t ufl_line) { if( (ufl_line > CN_INT_LINE_LAST) || (tg_pIntLineTable[ufl_line] == NULL) || (tg_int_global.nest_real != 0) ) return false; if(tg_pIntLineTable[ufl_line]->int_type == CN_REAL) return false; if(tg_pIntLineTable[ufl_line]->en_counter != 0) tg_pIntLineTable[ufl_line]->en_counter--; if(tg_pIntLineTable[ufl_line]->en_counter==0) { tg_int_global.enable_bitmap[ufl_line/CN_CPU_BITS] |= 1<<(ufl_line % CN_CPU_BITS); Int_ContactLine(ufl_line); } return true; }