当前位置: 首页 > article >正文

45集 ESP32 ADC按键程序编写

45集 ESP32 ADC按键程序编写

参考例程是
D:\Espressif\esp-adf\examples\checks\check_board_buttons
1、config
这个向下兼容的要加上,如果不加会有错误。
CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY=y
在这里插入图片描述
2、程序里面引入如下头文件
#include “periph_adc_button.h”
#include “input_key_service.h”
在这里插入图片描述
3、加入如下代码

static esp_err_t input_key_service_cb(periph_service_handle_t handle, periph_service_event_t *evt, void *ctx)
{
    ESP_LOGD(TAG, "[ * ] input key id is %d, %d", (int)evt->data, evt->type);
    const char *key_types[INPUT_KEY_SERVICE_ACTION_PRESS_RELEASE + 1] = {"UNKNOWN", "CLICKED", "CLICK RELEASED", "PRESSED", "PRESS RELEASED"};
    switch ((int)evt->data) {
        case INPUT_KEY_USER_ID_REC:
            ESP_LOGI(TAG, "[ * ] [Rec] KEY %s", key_types[evt->type]);
            break;
        case INPUT_KEY_USER_ID_SET:
            ESP_LOGI(TAG, "[ * ] [SET] KEY %s", key_types[evt->type]);
            break;
        case INPUT_KEY_USER_ID_PLAY:
            ESP_LOGI(TAG, "[ * ] [Play] KEY %s", key_types[evt->type]);
            break;
        case INPUT_KEY_USER_ID_MODE:
            ESP_LOGI(TAG, "[ * ] [MODE] KEY %s", key_types[evt->type]);
            break;
        case INPUT_KEY_USER_ID_VOLDOWN:
            ESP_LOGI(TAG, "[ * ] [Vol-] KEY %s", key_types[evt->type]);
            break;
        case INPUT_KEY_USER_ID_VOLUP:
            ESP_LOGI(TAG, "[ * ] [Vol+] KEY %s", key_types[evt->type]);
            break;
        case INPUT_KEY_USER_ID_MUTE:
            ESP_LOGI(TAG, "[ * ] [MUTE] KEY %s", key_types[evt->type]);
            break;
        case INPUT_KEY_USER_ID_CAPTURE:
            ESP_LOGI(TAG, "[ * ] [CAPTURE] KEY %s", key_types[evt->type]);
            break;
        case INPUT_KEY_USER_ID_MSG:
            ESP_LOGI(TAG, "[ * ] [MSG] KEY %s", key_types[evt->type]);
            break;
        case INPUT_KEY_USER_ID_BATTERY_CHARGING:
            ESP_LOGI(TAG, "[ * ] [BATTERY_CHARGING] KEY %s", key_types[evt->type]);
            break;
        case INPUT_KEY_USER_ID_WAKEUP:
            ESP_LOGI(TAG, "[ * ] [WAKEUP] KEY %s", key_types[evt->type]);
            break;
        case INPUT_KEY_USER_ID_COLOR:
            ESP_LOGI(TAG, "[ * ] [COLOR] KEY %s", key_types[evt->type]);
            break;
        default:
            ESP_LOGE(TAG, "User Key ID[%d] does not support", (int)evt->data);
            break;
    }

    return ESP_OK;
}


4、加入key初始化函数



void key_start(esp_periph_set_handle_t set)
{
    ESP_LOGI(TAG, "[ key_start ] Initialize Button peripheral with board init");
    audio_board_key_init(set);

    ESP_LOGI(TAG, "[ key_start ] Create and start input key service");
    input_key_service_info_t input_key_info[] = INPUT_KEY_DEFAULT_INFO();
    input_key_service_cfg_t input_cfg = INPUT_KEY_SERVICE_DEFAULT_CONFIG();
    input_cfg.handle = set;
    input_cfg.based_cfg.task_stack = 4 * 1024;
    periph_service_handle_t input_ser = input_key_service_create(&input_cfg);

    input_key_service_add_key(input_ser, input_key_info, INPUT_KEY_NUM);
    periph_service_set_callback(input_ser, input_key_service_cb, NULL);

    ESP_LOGW(TAG, "[ 4 ] Waiting for a button to be pressed ...");
}


带着


http://www.kler.cn/news/338931.html

相关文章:

  • 【Linux】-----进程第二弹(优先级,环境变量)
  • No.13 笔记 | 网络安全防护指南:从法律法规到技术防御
  • 【LeetCode】动态规划—516. 最长回文子序列(附完整Python/C++代码)
  • ffmpeg源码分析(七)结构体之AVStream
  • day03 笔试练习
  • LeetCode讲解篇之322. 零钱兑换
  • 每天五分钟深度学习pytorch:基于pytorch搭建一元线性回归模型
  • Axure中文版:原型设计新手必备工具,轻松上手!
  • 数据挖掘笔记part one (认识数据挖掘)
  • matplotlib中文显示乱码问题
  • 线性代数书中求解齐次线性方程组、非齐次线性方程组方法的特点和缺陷(附实例讲解)
  • 在 JavaScript 中使用 window 对象来刷新页面
  • 深入浅出:现代JavaScript开发者必知必会的Web性能优化技巧
  • 体系结构论文(五十四):Reliability-Aware Runahead 【22‘ HPCA】
  • 简单认识redis-5 jdbc 与 jedis 使用的区别
  • Redis 缓存策略详解:提升性能的四种常见模式
  • springboot整合mybatis案例
  • Spring Boot助力医院数据管理
  • 【C语言】关于指针各项细节以及与其他知识点关联
  • Java Web 开发