LORA-B1 按键控制

lora DK45 0评论

本节主要实现Lora-B1板上按键输入检测,控制led亮灭,目的也是为了不熟悉stm32的童鞋更加快速熟悉基本的开发流程。而对于比较熟悉的同学可以略过此章节部分。

开发环境准备:

硬件:

  • Lora-B1开发板一块
  • DAPLINK(或STLINK、Jlink)调试器

软件:

  • stm32cubemx
  • MDK5

硬件原理图:

LED连接到stm32的PF1引脚,KEY连接到PF0引脚。

软件配置:

打开stm32cubemx,型号选择stm32f030F4。配置PF1为输出,并取名为LED,配置PF0为输入,并取名为KEY。

当然这样还没有完,从原来图可以看出来我们的KEY接在引脚和GND之间,但是和引脚相连的地方并没有加外部上拉。所以在软件里面我们要设置PF0为带上拉输入模式。

其他请参考第一节的配置,生成mdk工程。

代码实现:

代码实现比较简单,用keystate状态来代表按键状态,这样通过状态机的处理也很容易进行按键滤波。

 
while (1)
{
    uint8_t tstate=HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin);
    switch(keyState)
    {
      case 0:
        if(tstate==GPIO_PIN_RESET)keyState=1;
        break;
      case 1:
        if(tstate==GPIO_PIN_RESET)
        {
          HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);
          keyState=2;
        }
        else keyState=0;
        break;
      case 2:
        if(tstate==GPIO_PIN_SET)keyState=0;
        break;
    }
    HAL_Delay(10);
/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */
}
喜欢 (2)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址