这个项目能做什么

TinyUSB是一个面向嵌入式系统的开源跨平台USB主机/设备协议栈。它专为内存安全(无动态分配)和线程安全(所有中断延迟到非ISR任务函数)而设计,强调在50多个MCU系列中的可移植性、小占用空间和实时性能。 关键特性包括通过中央队列进行ISR事件处理的线程安全操作、无动态分配的静态缓冲区、跨多个MCU系列的可移植性,以及对CDC、HID、MSC、音频和主机功能的支持。它可与裸机、FreeRTOS、RT-Thread和Mynewt一起使用。 仓库布局包括文档、使用make和cmake构建系统的示例、硬件BSP和MCU驱动、第三方库、协议栈源码、测试(单元、模糊、硬件)以及内部工具。 设备协议栈通过动态USB描述符支持多种配置,低功耗功能如挂起、恢复和远程唤醒,以及音频1.0/2.0、BTH HCI、CDC、DFU、HID、打印机、多LUN MSC、MIDI、MTP/PTP、RNDIS/ECM/NCM网络、USBTMC、UVC(进行中)、厂商特定类和WebUSB等类。自定义类驱动可通过usbd_app_driver_get_cb()添加。 主机协议栈支持CDC-ACM、通过USB的厂商串行(FTDI、CP210x、CH34x、PL2303)、HID、MSC、MIDI和多级集线器。自定义主机驱动可通过usbh_app_driver_get_cb()添加。 电源传输协议栈(PD3.0搭配USB Type-C)处于非常早期阶段,仅用于测试,且仅支持STM32 G4。 操作系统抽象层将所有ISR事件推入中央队列,在非ISR上下文中处理,使用信号量/互斥锁保护共享资源。支持的操作系统包括无操作系统、FreeRTOS、RT-Thread和Mynewt。 支持的CPU涵盖多家制造商,包括Allwinner、Analog、Artery AT32、Bridgetek、Broadcom、Dialog、Espressif、Geehy、GigaDevice、HPMicro、Infineon、MicroChip、MindMotion、NordicSemi、Nuvoton、NXP、Puya、Raspberry Pi、Renesas、Silabs、Sony、ST STM32、TI、ValentyUSB和WCH,对设备、主机和高速模式的支持各不相同。 免费提供的开发工具包括IAR构建工具、JetBrains CLion和PVS-Studio静态分析器。