打印
[STM32F1]

[二]使用b_button功能模块

[复制链接]
473|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liklon|  楼主 | 2020-3-9 22:51 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 liklon 于 2020-3-9 22:55 编辑

STM32CUBE增加4个按键
按键名引脚
KEY_1PC4
KEY_2PB10
KEY_3PC13
WAKEUPPA0


配置b_config.h
    本次实验测试b_button功能,使能Thirdparty里面的FlexibleButton
添加Flexiblebutton代码
    添加BabyOS\bos\core\thirdparty\FlexibleButton\目录所有文件,添加头文件路径
   
设置按键ID及按下时的逻辑电平
//b_button.h内添加
typedef enum
{
    USER_BUTTON_1,
    USER_BUTTON_2,
    USER_BUTTON_3,
    USER_BUTTON_WAKEUP,
    USER_BUTTON_MAX
}bBUTTON_ID_t;

//b_button.c内添加按下后的逻辑电平
static flex_button_t bButtonList[USER_BUTTON_MAX] = {
    [USER_BUTTON_1] = {
        .pressed_logic_level = 0,
    },
    [USER_BUTTON_2] = {
        .pressed_logic_level = 0,
    },
    [USER_BUTTON_3] = {
        .pressed_logic_level = 0,
    },
    [USER_BUTTON_WAKEUP] = {
        .pressed_logic_level = 0,
    },     
};

添加读取按键值和回调

//main.c添加
/* USER CODE BEGIN 0 */
uint8_t bButtonRead(void *p)
{
    uint8_t tmp = 1;
    flex_button_t *btn = (flex_button_t *)p;
    switch(btn->id)
    {
        case USER_BUTTON_1:
            tmp = HAL_GPIO_ReadPin(KEY_1_GPIO_Port, KEY_1_Pin);
            break;
        case USER_BUTTON_2:
            tmp = HAL_GPIO_ReadPin(KEY_2_GPIO_Port, KEY_2_Pin);
            break;
        case USER_BUTTON_3:
            tmp = HAL_GPIO_ReadPin(KEY_3_GPIO_Port, KEY_3_Pin);
            break;
        case USER_BUTTON_WAKEUP:
            tmp = HAL_GPIO_ReadPin(WAKEUP_GPIO_Port, WAKEUP_Pin);
            break;         
    }
    return tmp;
}


void bButtonCallback(void *p)
{
    flex_button_t *btn = (flex_button_t *)p;
    switch(btn->id)
    {
        case USER_BUTTON_1:
            b_log("key_1  event: [%d]\r\n", btn->event);
            break;
        case USER_BUTTON_2:
            b_log("key_2  event: [%d]\r\n", btn->event);
            break;
        case USER_BUTTON_3:
            b_log("key_3  event: [%d]\r\n", btn->event);
            break;
        case USER_BUTTON_WAKEUP:
            b_log("wakeup  event: [%d]\r\n", btn->event);
            break;
    }
   
}
/* USER CODE END 0 */

调用bButtonInit
 /* USER CODE BEGIN WHILE */
  bInit();
  bButtonInit();
  while (1)
  {
      bExec();
  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */

  }
  /* USER CODE END 3 */


开始测试
1.按键各按一次
2.key_1长按

测试结果:


子模块采用BabyOS master分支 https://gitee.com/notrynohigh/BabyOS


使用特权

评论回复
沙发
mmuuss586| | 2020-3-18 10:04 | 只看该作者
感谢分享

使用特权

评论回复
板凳
晓伍| | 2020-4-3 17:54 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
地板
八层楼| | 2020-4-3 17:55 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
5
观海| | 2020-4-3 17:55 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
6
guanjiaer| | 2020-4-3 17:55 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
7
heimaojingzhang| | 2020-4-3 17:55 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

50

帖子

1

粉丝