IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> ESP32S3使用esp-iot-solution SDK开发USBHID鼠标键盘教程 -> 正文阅读

[嵌入式]ESP32S3使用esp-iot-solution SDK开发USBHID鼠标键盘教程

一、前言

? 手里最近翻到了一个ESP32S3开发板,于是想做个鼠标键盘玩玩,这是我第二次接触ESP32,上一次18年买的吃灰板子至今没上过电。新找到的S3看手册是支持OTG的,按照官方的教程搭建的WSL+VSCODE环境。然而一切准备就绪发现ESP-IDF里面没有USB-HIDdemo。没有demo怎么玩。于是乎查找资料找,找到了专为物联网开发SDK esp-iot-solution简介如下。该框架支持usb OTG 功能。
在这里插入图片描述

二、环境搭建

? 这里面要注意的是官方说明写的 esp-iot-solution支持的依赖是ESP-IDFv4.3。但是我这里用的是 esp-iot-solution其中的一个分支USB。按照官方的依赖V4.3做USB的话搞到地老天荒都搞不出来。原因是TinaUsb组件要ESP-IDF依赖是4.4。这个问题困扰了我好几天。

在这里插入图片描述在这里插入图片描述在这里插入图片描述
? 好了下面开始下载分支按照教程安装即可。

? 仓库下载地址

? https://github.com/espressif/esp-idf

? https://github.com/espressif/esp-iot-solution

克隆 esp-iot-solution usb分支

clone -b usb/add_usb_solutions  --recursive https://github.com/espressif/esp-iot-solution

克隆 ESP-IDF4.4 分支

git clone -b release/v4.3 --recursive  https://github.com/espressif/esp-idf.git

克隆后如下图所示
在这里插入图片描述

按照官方教程激活环境

? 进入到usb_hid_device目录下,在CmakeLists.txt中增加一条指令保存,不要按官方手册都复制进去。
在这里插入图片描述
在这里插入图片描述

三、sdkmenu参数配置

1、设置开发环境

? 这里面有个坑,如果配置内核开发板为ESPS3 目标芯片也为ESP32的话,就会报example 只支持ESP32错误。
在这里插入图片描述? 翻看官方issue发现类似问题,官方解释这是ESp32S3 bug 之后会修复,临时的解决办法是开发板设置SaoLa ESP32S2
在这里插入图片描述

然后目标芯片设置成ESP32S3

idf.py set-target esp32s3

2、开始编译

? 重新编译,漫长等待结果还是报错,不过这回的错误变了
在这里插入图片描述

 error: unknown type name 'button_handle_t'

提示找不到类型名称,根据多年经验分析,这个情况多半是头文件没有包含进来或者源文件没有添加。

通过vscode 定位到该类型在iot_button.h

在这里插入图片描述

? 既然文件存在那么分析一下为啥找不到。看主程序的头文件引用,在主程序里面没有直接引用iot_button.h,那么最有可能在board.h中间接包含,打开board.h文件。
在这里插入图片描述

? 果然如我所料间接包含了,但是编译的时候还是找不到,通过分析发现,该board.h在目录esp32s3_usb_otg_ev路径下,这个目录是否被包含是根据是上文menuconfig中 boards options 选项选择开发板决定的,上文已经说了该SDK只支持esp32s2,为了适配S3开发板只能选择saola,所以导致生成的sdkconfig不包含esp32s3_usb_otg_ev路径,所以主程序不能找到board.h文件,间接的不能找到iot_button.h文件。
在这里插入图片描述

? 既然问题已经发现了,那就开始着手解决问题,第一步既然没有包含iot_button.h那么直接在主程序里包含好了,然后编译。
在这里插入图片描述
? 上述问题解决,但是又出现新问题了,iot_board_button_register_cb按键注册回调函数找不到。根据函数就知道了它也在board.h中。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

? 通过程序分析,该函数模注册个按键事件模拟鼠标或者键盘发送数据,不影响主体USB相关功能,而且按键发送程序,不一定要用demo的写法,所以这是个可有可无的功能,后期可以自己从写,为了大业先屏蔽掉,然后编译。
在这里插入图片描述

哈哈 终于编译通过了
在这里插入图片描述

3、程序烧录

? 串口烧录要频繁在现实与虚拟环境切换串口麻烦,所以这里通过flash烧录软件进行烧录如下图,主要偏移地址和S2不一样。
在这里插入图片描述

? 烧写完成后将将开发板插到电脑上,见证奇迹时刻了。
在这里插入图片描述

四、错误集合解决办法

1、这个错误的原因就是sdk版本低不支持S3

 error: 'ADC_BUTTON_WIDTH' undeclared (first use in this function); did you mean 'ADC_BUTTON_ATTEN'?

在这里插入图片描述

没有S3的定义,增加一个宏定义即可

在这里插入图片描述

2、这个错误的原因就是ESP-IDF和add_usb_solutions同名组件版本不一致造成的,我的临时做法是将add_usb_solutions下的audio改个名字。重新编译问题即可解决。

 error: unknown type name 'i2s_dac_mode_t'
     i2s_dac_mode_t          dac_mode;               /*!< DAC mode configurations - see i2s_dac_mode_t*/

在这里插入图片描述

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-06-06 17:29:39  更:2022-06-06 17:30:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 7:40:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计