STM32
直播中

石胜厚

7年用户 1074经验值
私信 关注
[问答]

怎样用STM32按键去控制LED的亮灭呢

STM32板子上有哪几个按键?
怎样用STM32按键去控制LED的亮灭呢?

回帖(1)

贺楠

2021-10-22 11:36:34
  按键设置并不陌生,STM32板子上有5个按键,特别的一个是RST键(复位键)而其他四个键。
  
  控制按键只需要对其端口初始化,对其GPIO口进行时间配置,并对KEY初始化,
  加上LED的相关配置;就可以实现LED的亮灭。
  void RCC_Configuration(void)
  {
  SystemInit();//时间配置
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能或者失能 APB2 外设时钟 (GPIO(B)指的是led,定义的B型端口)
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//(GPIO(c)指的是key,定义的c型端口)
  }
  void GPIO_Configuration(void)
  {
  GPIO_InitTypeDef GPIO_InitStructure;//GPIO_InitStructure为设置的变量
  //LED初始化
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;//led 选择待设置的 GPIO 端口
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;// 设置选中管脚的速率
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;// GPIO 设置选中管脚的工作状态 推挽输出
  GPIO_Init(GPIOB,&GPIO_InitStructure);
  //KEY初始化GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;//输入管脚没有口线反转速度GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;// GPIO 设置选中管脚的工作状态 输入上拉模式 GPIO_Init(GPIOC,&GPIO_InitStructure); }
  主程序要写入按键如何控制LED,可以写成if形式,判断按键是否按下。未按下时,LED灯一直灭,按下时LED灯亮。
  while(1)
  {
  //if{}不断读取管脚状态 GPIO_ReadInputDataBit读取指定端口管脚的输入
  if(GPIO_ReadInputDataBit(GPIOC/设置的端口/,GPIO_Pin_5/设置端口里的管脚/)==Bit_RESET)
  {
  //LED 发光 低电平
  GPIO_ResetBits(GPIOB,GPIO_Pin_5);//清除指定的数据端口位
  }
  else
  {
  //LED 熄灭 高电平
  GPIO_SetBits(GPIOB,GPIO_Pin_5);//设置指定的数据端口位
  }
  }
举报

更多回帖

发帖
×
20
完善资料,
赚取积分