基于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);

 


你可能感兴趣的:(STM32)