PA0接WK_UP按键,按下高电平,松开低电平。
配置流程:
1.配置IO口时钟
__HAL_RCC_GPIOA_CLK_ENABLE();
2。配置IO口
GPIO_InitTypeDef GPIO_InitStruct = {0};
// 配置PA0引脚
GPIO_InitStruct.Pin = GPIO_PIN_0;
// 配置为双边沿中断模式
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING;
// 默认下拉
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
// 初始化PA0
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
3.找对应的中断函数
以对应引脚PA0的中断向量EXTI0在startup_stm32f103xb.s寻找对应中断函数EXTI0_IRQHandler
将中断处理代码写入中断函数中
void EXTI0_IRQHandler(void)
{
/* 清中断标志位*/
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);
/* 双边沿计数 */
cnt=cnt+1;
}
4.使能中断并配置中断优先级
//配置EXTI0优先级 第0组第0个
HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0);
//使能中断
HAL_NVIC_EnableIRQ(EXTI0_IRQn);