基于CUBE_HAL的STM32F103学习笔记(003.按键控制led亮灭)

003.按键控制led亮灭

  1. 设计目标
    A.功能
    通过KEY控制LED亮和灭,即按一次按键,灯灭,再按一次灯亮。
    B.电路分析
    基于CUBE_HAL的STM32F103学习笔记(003.按键控制led亮灭)_第1张图片C.逻辑关系
    显然LED应当为输出,KEY应当为输入,STM32通过检查KEY的状态,来控制LED。
  2. CUBE的配置
    基于CUBE_HAL的STM32F103学习笔记(003.按键控制led亮灭)_第2张图片
  3. 典型代码
if(HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin)==GPIO_PIN_RESET)
{	HAL_Delay(10);
	if(HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin)==GPIO_PIN_RESET)
	{	HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);
		while(HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin)==GPIO_PIN_RESET);
	}
}

  1. 小结
    按键处理最关键的就是防止抖动,为了实现这一目的,在检测到按键按下之后,间隔10ms,再次对按键进行检测,如果仍为按下状态,则判断按键已经按下。为了防止按键被多次检测,使用while进行循环,确保按一次按键,只执行一次程序。但此方法明显极端占用CPU资源,因此在条件允许的情况下,可以使用中断(NVIC)进行处理。

你可能感兴趣的:(cubemx,stm32)