Baike.dev
All toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
T

TeenyUSB

> DevOps
Open source

Lightweight USB device and host stack for STM32 and other MCUs. Ready for USB 3.0 device.

613 stars0 likes0 views
WebsiteGitHub

About

Lightweight USB device and host stack for STM32 and other MCUs. Ready for USB 3.0 device.

Teeny USB

一个简易的单片机USB主机和设备协议栈,现在支持3.0设备。

A teeny USB device and host stack for MCUs, support super speed device.

关于TeenyUSB的实现细节和使用方式请阅读《STM32 USB设备开发指南》 Github下载 , 21IC下载

设备栈 Device Stack

  • HID class
  • MSC 大容量存储设备,U盘。 Mass storage class
  • CDC ACM 虚拟串口。 Communication device class, abstract control mode, known as virtual serial port.
  • CDC RNDIS 虚拟网口。 Communication device class, remote NDIS
  • Vendor 厂商自定义设备。 vendor class

USB描述符由TeenyDT生成。 在线试用TeenyDT

USB descriptor is generate by TeenyDT. Try TeenyDT online

USB设备例程 Demo for device

  • 复合设备,包含HID CDC(虚拟串口) WinUSB MSC(U盘) Composite device with HID+CDC+WinUSB+MSC
  • WinUSB设备,Bulk传输免驱动。 Bulk device with WinUSB support
  • CMSIS DAP on STM32F723 discovery
  • 虚拟网卡, CDC RNDIS device

主机栈 Host Stack

  • HUB class, 支持多设备级连, support multiple device and hub
  • HID class, 支持键盘、鼠标以及自定义HIDden设备。support keyboard, mouse, custom device
  • MSC class, 大容量存储类(U盘),使用BOT协议。 mass storage class with BOT protocol
  • CDC ACM class, 虚拟串口。 Communication device class, abstract control mode
  • CDC RNDIS class, 虚拟网口。 Communication device class, remote NDIS
  • Vendor class,厂商自定义设备

USB主机例程 Demo for host

  • 简易交互式主机,支持U盘、HUB、键盘、鼠标以及自定义设备 更多说明。 Interactive host, support HUB,MSC,Keyboard,Mouse and generic device. more info
  • rt-thread双角色设备, 支持运行时切换设备类行,支持动态mount U盘,更多说明。Dual role device with rt-thread, more info.

如何生成示例程序 How to make demo

编译工具为 arm-none-eabi-gcc is the compile toolchain.

调试使用VSCode+OpenOCD,如何在VSCode中配置STM32开发调试环境?

git clone https://github.com/xtoolbox/TeenyUSB.git
cd TeenyUSB
git submodule update --init
cd sample
make all -j8

如果更新mcu库很慢,可以使用gitee.com镜像。https://gitee.com/xtoolbox/st_driver.git

demo编译后各字段大小信息 Section size info of each demo

…

目录结构说明 Folder

.
├── TeenyDT         # 基于lua的USB描述符生成工具 A lua based USB descriptor generator 
├── sample          # 示例代码 Sample projects
├── mcu_lib         # MCU文件子仓库,MCU library sub module
├── core            # USB核心文件, TeenyUSB core file
├── class           # USB设备类和主机类文件, TeenyUSB device and host class file
├── driver_stm32    # STM32驱动文件。 STM32 Driver file
├── pc_test_tool    # 基于lua Qt的Windows USB 测试程序 A luaQt based Windows program to test CDC/HID/WinUSB devices
└── third_part      # 第三方代码,如FatFs,rt-thread。 Third part source code, e.g. FatFs, rt-thread.

Demo测试用的开发板 Demo tested boards

Board Folder Board Type Chip HSE Freq USB Core
stm32f072c8t6 Custom board STM32F072C8T6 No HSE USB FS
stm32f103ret6 Custom board STM32F103RET6 8 MHz USB FS
stm32f107vc Custom board STM32F107VCT6 25 MHz OTG_FS
stm32f3_disco stm32f3 disco STM32F303VCT6 8 MHz USB FS
stm32f407_evk Waveshare EVK407I STM32F407IGT6 8 MHz OTG_FS/OTG_HS_ULPI
stm32f723e_disco stm32f723e discovery STM32F723IEK6 25 MHz OTG_FS/OTG_HS_Embed
stm32767zi_nucleo stm32f767zi nucleo STM32F767ZIT6 8 MHz OTG_FS
stm32h743_openmv stm32h743_openmv STM32H743VIT6 12 MHz OTG_FS
ch565w_evk ch565w_evk CH565W 30 MHz OTG_SS

其它支持STM32的开源USB协议栈 Other open source USB stack for STM32

  • tinyusb 全静态内存分配,不支持多设备,不支持同一设备上使用多个同类型接口,暂时不支持STM32主机模式。
  • libopencm3 动态生成描述符,不依赖官方库。USB设备类型少,不支持主机模式。
  • libusb_stm32 资源占用极少的USB设备库,不支持主机模式。

其它嵌入式开源USB协议栈

  • lufa 运行于AVR的轻量级USB主机和从机栈。

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

Ccdcch56xcompositeembedded

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
CategoryDevOps
PricingOpen source

> Related tools

D
Docker
容器化平台,标准化应用交付
G
GitHub Actions
GitHub 原生 CI/CD 工作流
N
Nginx
高性能 Web 服务器与反向代理