基于HAL的嵌入式学习——按键控制小灯

首先打开CubeMX软件并选择好芯片,进入配置页面。
进行RCC配置,选择HSE为Crystal/Ceramic Resonator。
基于HAL的嵌入式学习——按键控制小灯_第1张图片
之后进行时钟树的配置:
基于HAL的嵌入式学习——按键控制小灯_第2张图片
之后进行相关的引脚配置,在这里选择PA0为输入端口,PF10为输出端口,并进行相关的GPIO的相关配置,我的灯为低电平发光,因此我选择PF10初始状态为高电平,使灯保持初始为熄灭的状态。
基于HAL的嵌入式学习——按键控制小灯_第3张图片
进行好文件命名后就可以进行文件生成。
基于HAL的嵌入式学习——按键控制小灯_第4张图片
在生成的main.c中进行相关的编程工作,这里要注意,按键因为其机械特性要进行一下按键的消抖动作来确保按键确定被按下。
基于HAL的嵌入式学习——按键控制小灯_第5张图片
主要程序:
基于HAL的嵌入式学习——按键控制小灯_第6张图片

  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		if(HAL_GPIO_ReadPin(KEY_UP_GPIO_Port,KEY_UP_Pin)==GPIO_PIN_SET)//判断按键是否按下
		{
			HAL_Delay(10);//延时消抖
			if(HAL_GPIO_ReadPin(KEY_UP_GPIO_Port,KEY_UP_Pin)==GPIO_PIN_SET)//确定按键已经按下
			{
				HAL_GPIO_TogglePin(GREEN_GPIO_Port,GREEN_Pin);//翻转灯的电平状态
			}
			while(HAL_GPIO_ReadPin(KEY_UP_GPIO_Port,KEY_UP_Pin)==GPIO_PIN_SET);//等待按键释放
		}
  }

效果展示:
初始状态:
基于HAL的嵌入式学习——按键控制小灯_第7张图片
按键按下:

基于HAL的嵌入式学习——按键控制小灯_第8张图片
按键再次按下:
基于HAL的嵌入式学习——按键控制小灯_第9张图片

你可能感兴趣的:(单片机,嵌入式,stm32)