一个简易的单片机USB主机和设备协议栈,现在支持3.0设备。
A teeny USB device and host stack for MCUs, support super speed device.
关于TeenyUSB的实现细节和使用方式请阅读《STM32 USB设备开发指南》 Github下载 , 21IC下载
USB描述符由TeenyDT生成。 在线试用TeenyDT
USB descriptor is generate by TeenyDT. Try TeenyDT online
编译工具为 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
$ echo " text data bss dec hex filename" && make all -j8 LOG_INFO=0 | grep '^[^l].*output/.*.elf'
text data bss dec hex filename
12072 1084 69296 82452 14214 output/f723dap.elf
4480 1080 6068 11628 2d6c output/f072bulk.elf
6392 1084 6416 13892 3644 output/f407bulk.elf
5396 1084 6064 12544 3100 output/f303bulk.elf
4972 1080 6068 12120 2f58 output/f103bulk.elf
6524 1084 6416 14024 36c8 output/f723bulk.elf
6284 1084 6416 13784 35d8 output/f767bulk.elf
8100 3500 2200 13800 35e8 output/f103comp.elf
8324 3500 2200 14024 36c8 output/f072comp.elf
10132 3504 2588 16224 3f60 output/f407comp.elf
10240 3504 2588 16332 3fcc output/f723comp.elf
8528 3504 2196 14228 3794 output/f303comp.elf
10000 3504 2588 16092 3edc output/f767comp.elf
27560 1092 35776 64428 fbac output/f107host.elf
28704 1092 28608 58404 e424 output/f407host.elf
28860 1092 28832 58784 e5a0 output/f723host.elf
28504 1092 28792 58388 e414 output/f767host.elf
.
├── 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.
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 |