发帖
0 0 0

下载按钮利用起来

hdydy
论坛元老

105

主题

356

回帖

1万

积分

论坛元老

积分
11860
小安派·BW21-CBV-KIt 23336 0 2025-10-12 21:55:42

button.h

#if !defined(_BUTTON_H_)
#define _BUTTON_H_

#ifdef __cplusplus
extern "C" {
#endif

#include "gpio_api.h"
#include "gpio_irq_api.h"
#include "gpio_irq_ex_api.h"
#include "pwmout_api.h"
#include "sys_api.h"
#include "analogin_api.h"

#ifdef CONFIG_BUTTON_IRQ
static gpio_irq_t button_irq;

#define BUTTON_IRQ_INIT(irq_handler, irq_event) do {\
    gpio_irq_init(&button_irq, PA_5, irq_handler, (uint32_t)&button_irq);\
    gpio_irq_pull_ctrl(&button_irq, PullDown);\
    gpio_irq_set(&button_irq, irq_event, 1);\
} while(0)
#else
static gpio_t button_gpio;

#define BUTTON_INIT() do {\
    gpio_init(&button_gpio, PA_5);\
    gpio_dir(&button_gpio, PIN_INPUT);\
    gpio_mode(&button_gpio, PullDown);\
} while(0)

#define BUTTON_STATE() gpio_read(&button_gpio)
#endif

#ifdef __cplusplus
}
#endif

#endif // _BUTTON_H_

BUTTON_STATE()读取电平,按钮按下为高电平

#include "button.h"

void setup() {
    BUTTON_INIT();
}

void loop() {
    if(BUTTON_STATE()) {}
    else {}
}

中断模式

#define CONFIG_BUTTON_IRQ
#include "button.h"

void gpio_demo_irq_handler(uint32_t id, gpio_irq_event event) {
    printf("%s,%ld,%d\r\n", __FUNCTION__, id, event);
}

void setup() {
    // BUTTON_INIT();
    BUTTON_IRQ_INIT(gpio_demo_irq_handler, IRQ_FALL);
}

void loop() {}
──── 0人觉得很赞 ────

使用道具 举报

您需要登录后才可以回帖 立即登录
高级模式
返回
统计信息
  • 会员数: 30861 个
  • 话题数: 44828 篇