stm32f103HAl库按键中断<笔记>

一、cubemx配置

1.根据板子的原理图找到相应引脚,配置成GPIO_EXT模式
stm32f103HAl库按键中断<笔记>_第1张图片

2.在左边栏找到GPIO,在中间栏下部分设置上升沿或下降沿触发

stm32f103HAl库按键中断<笔记>_第2张图片
stm32f103HAl库按键中断<笔记>_第3张图片
因为我这板子的按键是,按下之后接地,不按时是高电平,所以我设置它上拉,下降沿触发。
stm32f103HAl库按键中断<笔记>_第4张图片
3.把中间栏切换到NVIC,勾选Enabled!!!!(根据实际情况设置优先级)
stm32f103HAl库按键中断<笔记>_第5张图片

二、代码

将以下代码复制到main.c或者it.c中,改一改引脚就可以用啦
重中之重,中断里不要加延时!!!

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)//回调函数
{
	//中断不要加延时,延时就错了!!!!
  if(GPIO_Pin==GPIO_PIN_4)
  {
		for(int i;i<1000;i++);//消抖,有些人用HAL_Delay消抖,根本没法用,按键不起作用
		if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_4)==0)
		{
				HAL_GPIO_TogglePin(LED0_GPIO_Port, LED0_Pin);
				while(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_4)==0);
	}//实现led翻转
  }
}

你可能感兴趣的:(stm32)