首页 > 代码库 > rc滤波

rc滤波

这2天在做一个项目,需要用到光电开关检测位置,因为想到stm32有外部中断EXTI功能,就决定用它吧,不用不知道,用了才发现不像想象的那样简单,程序竟然没按预期动作,调试发现中断进入多次,对照手册,没找到外部中断的滤波设置,所以就按以前的老方法,来个软件滤波吧,效果不错,

 1 static unsigned char exti4 = 0;  2 void exti(void) 3 { 4     exti4 |= GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_4); 5     if((exti4&0xf) == 0xc)      //falling 6     { 7        //key3handler(0); 8         key3handler_up(0); 9         LED = 1;10         //printf("fall \r\n");11     }12     else if((exti4&0xf) == 0x3) // rising13     {14         key3handler(0);15         LED = 0;16         //printf("rising \r\n");17     }18     exti4 <<= 1;19 }

在ms中断中调用exti()即可。