輸入捕獲
根據芯片手冊,定時器2可以作為輸入捕獲使用,設置非常簡單,官方也提供了宏給我們使用
void Time2_cap_init(void) { /******* 輸入捕獲CF設置 **********/ Set_All_GPIO_Quasi_Mode; P04_Input_Mode; //P04 = 1; TIMER2_CAP0_Capture_Mode; //定時器2啟用輸入捕獲功能 IC3_P04_CAP0_RisingEdge_Capture; //P04管腳,捕獲方式:上升沿捕獲 set_ECAP;//開啟輸入捕獲的中斷 set_TR2; set_EA; }
處理函數
我的處理函數非常簡單,就是捕獲到一個上升沿后,改為下降沿觸發,即捕獲到一個脈沖。
1 void Capture_ISR (void) interrupt 12 2 { 3 static char state; 4 5 if(state == 1) 6 { 7 IC3_P04_CAP0_RisingEdge_Capture; //開啟上升沿捕獲 8 pulse_cnt++; //捕獲次數加1 9 10 state = 0; 11 } 12 else //第一次捕獲上升沿 13 { 14 IC3_P04_CAP0_FallingEdge_Capture; //開啟下降沿捕獲 15 state = 1; 16 17 } 18 clr_CAPF0; 19 20 21 }