大家好,我的PA3口是接收外部给的信号进行翻转的,由于速度比较快红圈内电平翻转的次数可能会有很多次,但是我想在T的时间之内,能把PA3多次翻转只认为是一次翻转,T的时间范围是40ms到590ms,
这个T的时间我是运用外部电容冲放电来实现的,本来我想当PA3=1时就让定时器做40ms到590ms的延时来配合外部电容的冲放电,从而用PA5口的翻转来实现PA3只翻转一次,现在我发现一个问题,只要PA3=1后定时器就会做40ms到590ms的延时
但是我只想要在T的时间也不管PA3有多少次为1,定时器只做一次40ms到590ms的延时,求大家帮忙谢谢
u8 DebC=0; // 全局
//---------------- 把下面的放在你认为需要检测PA3的地方, 或放在PA3的外部中断函数里
if (!DebC){
if (GPIOA->IDR & (1<<3)){
GPIOA->BSRR = (1<<5);
DebC = 40; // 40ms
}
}
//---------------- 把下面的放在CycTick 中断里, 当然要使能SysTick中断
if (DebC) {
if (!--DebC)
GPIOA->BSRR = (1<<(5+16));
}
一周热门 更多>