void SIGTRIG_IRQHandler(void)
{
//满洲里国峰电子科技
//www.guofengdianzi.com
//微信:guofengdianzi
//确保是否产生了EXTI Line中断
if(EXTI_GetITStatus(SIGTRIG_EXTI_LINE) != RESET)
{
TrigNum++;
// just 4 channels
if(TrigNum>3)
TrigNum=0;
printf("num=%d \r\n", TrigNum);
//清除中断标志位
EXTI_ClearITPendingBit(SIGTRIG_EXTI_LINE);
}
}
在上述代码中,使用printf验证是否每次的触发信号均被正确捕捉,然而我们在测试中发现,这个printf影响了该中断函数的速度,这个触发信号的频率大约是200us,测试时发现响应动作的周期却远大于200us,经排查是printf引起,将其注释后,恢复正常。
void SIGTRIG_IRQHandler(void)
{
//满洲里国峰电子科技
//www.guofengdianzi.com
//微信:guofengdianzi
//确保是否产生了EXTI Line中断
if(EXTI_GetITStatus(SIGTRIG_EXTI_LINE) != RESET)
{
TrigNum++;
// just 4 channels
if(TrigNum>3)
TrigNum=0;
//printf("num=%d \r\n", TrigNum);
//清除中断标志位
EXTI_ClearITPendingBit(SIGTRIG_EXTI_LINE);
}
}