ti TIMER中斷服務常式安排及處理
傳統的中斷向量表跳接中斷服務常式機制
GNU C官方中斷服務函式的標準型態為ISR(xxx_vect)。其中利用TIMER提供固定週期中斷的中斷源,可以選擇週期長度調整靈活性比較高的比較吻合(Compare Match)事件中斷。四個計時器分別為
ISR(TIMER0_COMP_vect),ISR(TIMER1_COMPA_vect), ISR(TIMER2_COMP_vect),以及ISR(TIMER3_COMPA_vect)。
登錄分享硬體TIMER中斷服務常式
任何C4M-OS提供的現成即時讀寫工作方塊,或使用者自行定義的結構體XXXTask_str及執行函式XXXTask_step(),都可以使用通用的硬體中斷分部登錄函式HWInt_reg()將工作方塊登錄進TIMER中斷分享器中並取得工作編號TaskId存進工作結構體的工作編號欄XXXTask_str.TaskID,呼叫時 HWIntStr_t* Str_p 參數應該使用TimnInt_str 其中n為計時器編號。
例如:將結構體XXXTask_str,及步級執行函式 XXXTask_step()共組的工作方塊,登錄進入TIMER0中斷分享器內。 HWInt_reg(&Tim0Int_str,XXXTask_step,&XXXTask_str);
在呼叫登錄函式前,需要先呼叫TIMHWINT_LAY()巨集定義出TimnInt_str。 使用者可以依據需求在適當的時機,呼叫禁致能函式 HWInt_en()來禁致 XXXTask。
例如:要致能己登錄在TIMER0中斷分享器的XXXTask工作方塊,。
HWInt_en(&Tim0Int_str,XXXTask_str.TaskID,1); 若要禁能改1為0。