基于STM32利用按键点亮LED灯

基于STM32利用按键点亮LED灯的基本步骤:

(1)打开stm32CubeMX,创建新工程文件

(2)选择需要的芯片,本次实验采用的是STM32F411RETx

(3)黄色代表可被使用的引脚,绿色代表已被确定功能的引脚。左侧设置栏中的红色部分表示:IO口复用造成的重叠,以至不能继续使用。

(4)选好芯片,设置好相关系数参量后,选择与keil5相对应的MDK—ARM V5。

源程序:

1.按键按下LED灯点亮

int main
{
 if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13) == 0){
        HAL_Delay(10);     //延时去抖
        if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13) == 0){     //判断是否有键按下,有则亮
            HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET);
        }else{
            HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET);
        }
    }
}

2.按键按下,LED灯亮1s后熄灭

int main
{
  if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13) == 0){
        HAL_Delay(10);
        if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13) == 0){              //判断时候有键按下
            HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET);
HAL_Delay(1000); //按键按下后灯亮1S
        }else{
            HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET);
        }
    }
}

3.按键按下LED点亮,再按键LED熄灭

int main{
 if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13) == 0)
 {
   HAL_Delay(100);  //延时去抖
       if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13) == 0) {        //判断是否有键按下
       //功能代码处
       HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);              //有键按下就反转
       //功能代码处
       while(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13) == 0);
       }
    }
 }


 配置引脚的初始化电平

  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(GPIOD, GPIO_PIN_13, GPIO_PIN_SET);


  /*Configure GPIO pin : PC13 */
  GPIO_InitStruct.Pin = GPIO_PIN_13;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

 
  /*Configure GPIO pin : PA5 */
  GPIO_InitStruct.Pin = GPIO_PIN_5;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);


版权声明:本文为tsundere_ning原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。