一、SMT32CubeMX配置
1、将PC14设置为GPIO_EXTI14外部中断模式,命名为KEY;将PC15设置为GPIO_Output模式,命名为LED。
2、将PC14的中断触发模式设置为下降沿触发
3、在NVIC(内嵌向量中断控制器)里面将EXTI中断优先级设置为1
二、代码
1、在stm32l0xx_hal_gpio.c里面可以看到处理中断请求的函数
void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
{
/* EXTI line interrupt detected */
if(__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != RESET)
{
__HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
HAL_GPIO_EXTI_Callback(GPIO_Pin); //这个响应函数需要自己写
}
}
2、在gpio.c里面编写Callback响应函数
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
/*实现按键中断控制LED亮起和熄灭*/
if(GPIO_Pin == KEY_Pin)
{
if(HAL_GPIO_ReadPin(LED_GPIO_Port,LED_Pin)==GPIO_PIN_RESET)//读取LED引脚状态
HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET);
else if(HAL_GPIO_ReadPin(LED_GPIO_Port,LED_Pin)==GPIO_PIN_SET)
HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET);
}
}
3、main.c不用动
三、效果
按下USER按键,LED熄灭,再按一下,LED点亮。