各位大神,请教下,最近在调试stm32的外部中断,外部中断线的信号是电压比较器的输出端。在输入信号低于参考电压时产生下跳沿,此时触发中断,但是我发现在高于参考电压时产生的上升沿也会触发外部中断。外部中断的配置没有问题。通过示波器观看比较器的输出端,这个时候确实是有上升和下跳沿,波形上没有毛刺。后来实验,用单片机引脚每隔5s输出高低电平,这个时候只有下跳沿的时候会触发中断,但是经观察单片机输出的波形和比较器输出的波形差不多,都是比较漂亮的上升沿和下降沿,为何比较器输出的就会上升沿和下降沿都会进中断,而单片机输出的却不会呢、中断配置这一部分代码相同,没有做任何修改,请教各位帮助,谢谢!麻烦各位帮帮忙,谢谢[/mw_shl_code]
EXTI_InitStructure.EXTI_Line = EXTI_Line1;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
// EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//下降沿触发中断
EXTI_InitStructure.EXTI_Trigger =EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);[/mw_shl_code]
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);[/mw_shl_code]
[/mw_shl_code]
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOA,&GPIO_InitStructure);//中断输入引脚配置[/mw_shl_code]
[/mw_shl_code]
[/mw_shl_code]
u8 itp=0;
void EXTI1_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line1)!= RESET)
{ delay_nus(6000); //去除抖动
if(EXTI_GetITStatus(EXTI_Line1)!= RESET)
{
EXTI_ClearFlag(EXTI_Line1);
itp++;
GPIO_ResetBits(GPIOA,GPIO_Pin_6);//亮
delay_nus(10000);
GPIO_SetBits(GPIOA,GPIO_Pin_6);//灭
EXTI_ClearFlag(EXTI_Line1);
}
}
EXTI_ClearFlag(EXTI_Line1);
}//中断处理函数
请求各位帮忙看看,谢谢
[/mw_shl_code] |