STM32外部中断

发布于 2024-06-20  119 次阅读


例子:将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();
}
最后更新于 2024-07-21