STM32
break;
case DECARSTIRQ:
printf("dwm1000 - pa1 rstint\r\n");
break;
case KEY_INT0_IN_Pin:
SetExtiState();
printf("KEY_INT0_IN_Pin key sos alarm \r\n");
break;
default:break;
}
}" target="_blank">请教下,stm32L03xx 无法进入外部中断函数 ?
函数配置如下:
// 使用外部 PB0 作为按键中断输入脚
void KEY_EXTI0_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
__HAL_RCC_GPIOB_CLK_ENABLE();
GPIO_InitStructure.Mode = GPIO_MODE_IT_FALLING;
GPIO_InitStructure.Pull = GPIO_NOPULL; // 外部已经加了上啦电组了
GPIO_InitStructure.Pin = KEY_INT0_IN_Pin;
HAL_GPIO_Init(KEY_INT0_IN_GPIO_Port, &GPIO_InitStructure);
HAL_NVIC_SetPriority(EXTI0_1_IRQn, 4, 0);
HAL_NVIC_EnableIRQ(EXTI0_1_IRQn);
}
void EXTI0_1_IRQHandler(void) // 当外部按键按下后,程序不会执行到这里来,不知道是什么情况啊 ??????????????
{
// HAL_GPIO_EXTI_IRQHandler(DECARSTIRQ | KEY_INT0_IN_Pin);
// EXTI line interrupt detected
if(__HAL_GPIO_EXTI_GET_IT(DECARSTIRQ) != RESET)
{
__HAL_GPIO_EXTI_CLEAR_IT(DECARSTIRQ);
HAL_GPIO_EXTI_Callback(DECARSTIRQ);
}
// EXTI line interrupt detected
if(__HAL_GPIO_EXTI_GET_IT(KEY_INT0_IN_Pin) != RESET)
{
__HAL_GPIO_EXTI_CLEAR_IT(KEY_INT0_IN_Pin);
HAL_GPIO_EXTI_Callback(KEY_INT0_IN_Pin);
}
}
/**
* @brief EXTI line detection callbacks
* @param GPIO_Pin: Specifies the pins connected EXTI line
* @retval None
*/
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
switch(GPIO_Pin)
{
case DW1000_DECAIRQ:
printf("dwm1000 - pa3 int\r\n");
break;
case DECARSTIRQ:
printf("dwm1000 - pa1 rstint\r\n");
break;
case KEY_INT0_IN_Pin:
SetExtiState();
printf("KEY_INT0_IN_Pin key sos alarm \r\n");
break;
default:break;
}
}
break;
case DECARSTIRQ:
printf("dwm1000 - pa1 rstint\r\n");
break;
case KEY_INT0_IN_Pin:
SetExtiState();
printf("KEY_INT0_IN_Pin key sos alarm \r\n");
break;
default:break;
}
}" target="_blank">
在配置前 必须先禁止中断,
void KEY_EXTI0_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
__HAL_RCC_GPIOB_CLK_ENABLE();
HAL_NVIC_DisableIRQ(EXTI0_1_IRQn);//配置前先禁止,因为在其他地方已经有初始化过了,如果不禁止
//这次重新再初始化时会失败
GPIO_InitStructure.Mode = GPIO_MODE_IT_FALLING;
GPIO_InitStructure.Pull = GPIO_NOPULL; //外部已经加了上啦电组了
GPIO_InitStructure.Pin = KEY_INT0_IN_Pin;
HAL_GPIO_Init(KEY_INT0_IN_GPIO_Port, &GPIO_InitStructure);
ClearExtiState();
HAL_NVIC_SetPriority(EXTI0_1_IRQn, 4, 0);
__HAL_GPIO_EXTI_CLEAR_IT(KEY_INT0_IN_Pin);
HAL_NVIC_EnableIRQ(EXTI0_1_IRQn);
}
展开全文
¥3.00
461
0