1、在上一篇点亮LED的基础上进行修改
主要有3个步骤:
(1)、配置时钟
(2)、配置中断
(3)、配置中断函数
2、配置时钟可以使用上一篇的也可以采用DISCO配置文件中的BSP_LED_Init(LED2)函数
3、配置中断
查看原理图:
可以知道使用的LED2(PB13)。
static void EXTI15_10_IRQHandler_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* Enable GPIOC clock */
__HAL_RCC_GPIOC_CLK_ENABLE();
/* Configure PC.13 pin as input floating */
GPIO_InitStructure.Mode = GPIO_MODE_IT_FALLING;
GPIO_InitStructure.Pull = GPIO_PULLDOWN;
GPIO_InitStructure.Pin = GPIO_PIN_13;
HAL_GPIO_Init(GPIOC, &GPIO_InitStructure);
/* Enable and set EXTI lines 10 to 15 Interrupt to the lowest priority */
HAL_NVIC_SetPriority(EXTI15_10_IRQn, 2, 0);
HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);
}
4、配置中断函数:
在主函数中添加回调函数:
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if (GPIO_Pin == GPIO_PIN_13)
{
/* Toggle LED2 */
BSP_LED_Toggle(LED2);
}
}
在stm32l4xx_it.c文件中添加以下内容:
void EXTI15_10_IRQHandler(void)
{
HAL_GPIO_EXTI_IRQHandler(SEL_JOY_PIN);
}
编译,烧写即可。
工程文件:
1、在上一篇点亮LED的基础上进行修改
主要有3个步骤:
(1)、配置时钟
(2)、配置中断
(3)、配置中断函数
2、配置时钟可以使用上一篇的也可以采用DISCO配置文件中的BSP_LED_Init(LED2)函数
3、配置中断
查看原理图:
可以知道使用的LED2(PB13)。
static void EXTI15_10_IRQHandler_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* Enable GPIOC clock */
__HAL_RCC_GPIOC_CLK_ENABLE();
/* Configure PC.13 pin as input floating */
GPIO_InitStructure.Mode = GPIO_MODE_IT_FALLING;
GPIO_InitStructure.Pull = GPIO_PULLDOWN;
GPIO_InitStructure.Pin = GPIO_PIN_13;
HAL_GPIO_Init(GPIOC, &GPIO_InitStructure);
/* Enable and set EXTI lines 10 to 15 Interrupt to the lowest priority */
HAL_NVIC_SetPriority(EXTI15_10_IRQn, 2, 0);
HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);
}
4、配置中断函数:
在主函数中添加回调函数:
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if (GPIO_Pin == GPIO_PIN_13)
{
/* Toggle LED2 */
BSP_LED_Toggle(LED2);
}
}
在stm32l4xx_it.c文件中添加以下内容:
void EXTI15_10_IRQHandler(void)
{
HAL_GPIO_EXTI_IRQHandler(SEL_JOY_PIN);
}
编译,烧写即可。
工程文件: