【免费下载】 CherryUSB在RT-Thread环境下的快速开发指南
2026-02-04 04:04:14作者:宣聪麟
前言
CherryUSB是一个轻量级的USB协议栈,专为嵌入式系统设计。本文将详细介绍如何在RT-Thread实时操作系统环境下配置和使用CherryUSB软件包,包括从机(Device)和主机(Host)两种模式的配置方法。
环境准备
在开始之前,请确保已安装以下工具:
- RT-Thread开发环境(env工具)
- 目标芯片的BSP支持包
- 交叉编译工具链
软件包配置
1. 通过menuconfig配置CherryUSB
在env环境中执行menuconfig命令,进入软件包管理界面,找到CherryUSB选项进行配置。
从机(Device)模式配置
- 启用
Enable usb device mode选项 - 选择USB速度模式:
- FS:全速模式(12Mbps)
- HS:高速模式(480Mbps),需要芯片支持高速PHY
- 选择正确的USB设备控制器(IP)类型
- 选择需要使用的USB类(如HID、CDC、MSC等)
- 可选启用demo模板
主机(Host)模式配置
- 启用
Enable usb host mode选项 - 选择USB主机控制器(IP)类型
- 根据需要选择类驱动
- 注意:MSC类默认对接RT-Thread的DFS文件系统
工程文件配置
2. 创建usb_config.h文件
从模板拷贝cherryusb_config_template.h文件到工程目录,重命名为usb_config.h,并添加以下基础配置:
#include "rtthread.h"
// 重定向打印输出
#define CONFIG_USB_PRINTF(...) rt_kprintf(__VA_ARGS__)
// 内存管理适配
#define usb_malloc(size) rt_malloc(size)
#define usb_free(ptr) rt_free(ptr)
// 内存操作适配
#define memcpy rt_memcpy
3. 硬件初始化
根据目标芯片的USB控制器类型,需要实现底层初始化函数:
从机模式初始化示例
void OTG_HS_IRQHandler(void)
{
extern void USBD_IRQHandler(uint8_t busid);
USBD_IRQHandler(0);
}
int usbd_init(void)
{
xxx_template_init(0, USB_OTG_HS_PERIPH_BASE);
return 0;
}
INIT_APP_EXPORT(usbd_init);
主机模式初始化示例
void OTG_HS_IRQHandler(void)
{
extern void USBH_IRQHandler(uint8_t busid);
USBH_IRQHandler(0);
}
int usbh_init(void)
{
usbh_initialize(0, USB_OTG_HS_PERIPH_BASE);
return 0;
}
INIT_APP_EXPORT(usbh_init);
使用STM32CubeMX辅助配置
对于STM32系列芯片,可以使用STM32CubeMX工具生成USB初始化代码:
- 配置USB时钟、引脚和中断
- 生成代码后:
- 将
SystemClock_Config替换到board.c中 - 将
HAL_PCD_MspInit或HAL_HCD_MspInit中的内容复制到对应的低级初始化函数中
- 将
编译注意事项
- 使用MDK编译时,必须选择AC6编译器
- 使用GCC编译时,需要在链接脚本中添加USB类信息段:
/* section information for usbh class */
. = ALIGN(4);
__usbh_class_info_start__ = .;
KEEP(*(.usbh_class_info))
__usbh_class_info_end__ = .;
常见问题解答
Q: 如何确定芯片的USB IP类型? A: 可以参考CherryUSB的port目录下对应芯片的readme文档。
Q: 为什么MSC类不能启用demo模板? A: 因为MSC类默认对接RT-Thread的DFS文件系统,使用demo模板会导致冲突。
Q: 高速模式(HS)无法工作怎么办? A: 首先确认芯片是否内置高速PHY或外接了高速PHY芯片,其次检查时钟配置是否正确。
结语
本文详细介绍了在RT-Thread环境下配置和使用CherryUSB软件包的完整流程。通过合理的配置,开发者可以快速实现USB设备或主机功能。如果在使用过程中遇到问题,建议查阅芯片手册确认USB控制器的具体特性,并仔细检查初始化代码。
登录后查看全文
热门项目推荐
相关项目推荐
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
GLM-4.7-FlashGLM-4.7-Flash 是一款 30B-A3B MoE 模型。作为 30B 级别中的佼佼者,GLM-4.7-Flash 为追求性能与效率平衡的轻量化部署提供了全新选择。Jinja00
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin07
compass-metrics-modelMetrics model project for the OSS CompassPython00
项目优选
收起
deepin linux kernel
C
27
11
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
525
3.72 K
Ascend Extension for PyTorch
Python
329
391
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
877
578
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
335
162
暂无简介
Dart
764
189
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
12
1
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.33 K
746
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
67
20
React Native鸿蒙化仓库
JavaScript
302
350