×
单片机 > 单片机程序设计 > 详情

基于STM32利用按键点亮LED灯

发布时间:2020-05-26 发布时间:
|

基于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  按键  点亮LED灯

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
浅谈AVR中定时器几种工作模式