输入捕获
根据芯片手册,定时器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 }