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

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.mrgr.cn/news/43084.html

相关文章:

  • 【C语言系统编程】【第一部分:操作系统知识】1.1.操作系统原理
  • 解决TortoiseGit文件夹图标不见的问题。
  • 【CUDA】【PyTorch】安装 PyTorch 与 CUDA 11.7 的详细步骤
  • 【Conda】修复 Anaconda 安装并保留虚拟环境的详细指南
  • Shell-使用函数
  • 大学生就业服务:Spring Boot技术实践
  • Python知识点:如何使用Multiprocessing进行并行任务管理
  • docker拉取镜像推送到阿里云镜像仓库
  • c++_ 多态
  • 数据结构与算法(七)静态链表
  • 当你系统有多个模块的时候,要设计统一入口页了。
  • 瑜伽培训行业为何要搭建自己的专属知识付费小程序平台?集师知识付费系统 集师知识付费小程序 集师知识服务系统 集师线上培训系统
  • Monitor锁实现原理
  • 深度学习架构演变:从感知机到Transformer的技术革新
  • Markdown 语法详解大全(超级版)(二)
  • 设计模式之桥接模式(Bridge)
  • 招联2025校招内推倒计时
  • js chrome devtools 调试技巧
  • 掌握这一招,轻松用Vue和ECharts打造炫酷雷达图——详细教程指南
  • C++结构体定义和创建