大神们,如下是小弟的中断处理代码。现在的情况是。弄个在接受到中断信号后进入中断,但是进去了就出不来了,导致整个系统都当掉了。串口都不通了。拜求各位大神指点,小弟先谢过了。
void EXTI_Init(void)
{
GPIO_InitTypeDef GPIO_Initure;
__HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_RCC_GPIOD_CLK_ENABLE();
GPIO_Initure.Pin=GPIO_PIN_12|GPIO_PIN_13; //PB12 PB13
GPIO_Initure.Mode=GPIO_MODE_IT_FALLING;
GPIO_Initure.Pull=GPIO_PULLUP;
HAL_GPIO_Init(GPIOB,&GPIO_Initure);
GPIO_Initure.Pin=GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11;
GPIO_Initure.Mode=GPIO_MODE_IT_FALLING;
GPIO_Initure.Pull=GPIO_PULLUP;
HAL_GPIO_Init(GPIOD,&GPIO_Initure);
HAL_NVIC_SetPriority(EXTI9_5_IRQn,2,1);
HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);
HAL_NVIC_SetPriority(EXTI15_10_IRQn,2,2);
HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);
}
void EXTI9_5_IRQHandler(void)
{
if(!HAL_GPIO_ReadPin(GPIOD, GPIO_PIN_8))
{
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_8);
}
else if(!HAL_GPIO_ReadPin(GPIOD, GPIO_PIN_9))
{
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_9);
}
}
void EXTI15_10_IRQHandler(void)
{
if(!HAL_GPIO_ReadPin(GPIOD, GPIO_PIN_10))
{
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_10);
}
else if(!HAL_GPIO_ReadPin(GPIOD, GPIO_PIN_11))
{
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_11);
}
else if(!HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_12))
{
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_12);
}
else if(!HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_13))
{
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13);
}
}
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
delay_ms(100);
switch(GPIO_Pin)
{
case GPIO_PIN_8:
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_11,GPIO_PIN_SET);
break;
case GPIO_PIN_9: //=======================PD9 M6ÖD¶Ï′|àí========================
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_12,GPIO_PIN_SET);
break;
case GPIO_PIN_10: //=======================PD10 M3ÖD¶Ï′|àí========================
/
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_SET);
break;
case GPIO_PIN_11: //=======================PD11 M4ÖD¶Ï′|àí========================
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_15,GPIO_PIN_SET);
break;
case GPIO_PIN_12: //=======================PB12 M1ÖD¶Ï′|àí========================
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET);
break;
case GPIO_PIN_13: //=======================PB13 M2ÖD¶Ï′|àí========================
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,GPIO_PIN_SET);
break;
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
谢谢原子哥,此程序就是参考了HAL版的,外部中断例程,主要是我这里用到的IO口都是包含在5-9 10-15线上,这样会有问题吗?
一周热门 更多>