stm32 pb口 外部中断一直触发的问题
各位:今天用stm32f103c8遇到一个奇怪的问题,我用pb1和5两个外部引脚做外部中断,都是上升沿触发。但是使能中断后,pb5一直进中断,挂起标志清了之后不知道在哪由置1了 不知道有没有同学遇到相同的问题。
下面是我的代码:
//初始化代码:
GPIO_InitTypeDef GPIO_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
// GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOB, &GPIO_InitStructure);
// GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource1);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource5);
// EXTI_InitStructure.EXTI_Line = EXTI_Line1;
// EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
// EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
// EXTI_InitStructure.EXTI_LineCmd = ENABLE;
// EXTI_Init(&EXTI_InitStructure);
EXTI_InitStructure.EXTI_Line = EXTI_Line5;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
EXTI_GenerateSWInterrupt(EXTI_Line5);
// NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
// NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn;
// NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
// NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
// NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
// NVIC_Init(&NVIC_InitStructure);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
//中断服务函数:
void EXTI9_5_IRQHandler(void)
{
EXTI->IMR &= ~EXTI_Line5;
EXTI_ClearITPendingBit(EXTI_Line5);
EXTI->IMR |= EXTI_Line5;
}
终端服务函数中关中断和清标志位都是对的,但是出来之后挂起标志就又置1了。
今天也遇到这个问题,STM32F103C8T6,示波器测试外部无触发,但还是无故进中断 问题解决了吗?外接一个下拉电阻试一下 帮顶 要么没有正确的清楚中断标志,要么有外部中断一直产生,使用示波器看下这个引脚的电平是否一直在变化! creep 发表于 2015-6-20 10:57
要么没有正确的清楚中断标志,要么有外部中断一直产生,使用示波器看下这个引脚的电平是否一直在变化! ...
真的清除了,而且真的外部没有触发。
我在内存里能看到,进入中断函数后先关中断,然后清标志,然后再开中断。
外部引脚一直是低电平,我设置的是上升沿触发,也没问题啊。 支持一下 解决没,若没有,就先检查引脚状态是否一直有变化,若没有就试试例子中断函数写法。
if(EXTI_GetITStatus(EXTI_Line9) != RESET)
{
/* Toggle LED2 */
STM_EVAL_LEDToggle(LED2);
/* Clear theEXTI line 9 pending bit */
EXTI_ClearITPendingBit(EXTI_Line9);
} 我也遇到这样的问题了,请问最后找到原因没有?
STM32F030PB9和PB5配置为中断输入,没信号也老是进PB9中断,我在中断函数里加了一条将一个空闲IO口翻转指令,测试中断10uS左右进入一次。 我也碰到同样的问题 我也是同样的问题。中断引脚设置为浮空,下拉 上拉都是一直进入中断,也是103C8T6
页:
[1]
2