例子:将PD2作为外部中断引脚,上升沿触发
1.配置IO口
void configPD2AsITRising(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
__HAL_RCC_GPIOD_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_2;
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
HAL_NVIC_SetPriority(EXTI2_IRQn, 1, 0); //设置中断优先级
HAL_NVIC_EnableIRQ(EXTI2_IRQn); //开中断
}
2.在it.c中写
void EXTI2_IRQHandler(void)
{
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_2);
}
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
trigger_flag = 1;
printf("trigger\n");
configDLgpioAsOutput();
HAL_GPIO_WritePin(PIR_DL_GPIO_Port, PIR_DL_Pin, GPIO_PIN_RESET);
configDLgpioAsITRising();
}