1 STM32 USB 库
2 STM32_USB-FS_Device_Driver-Low Layer
2.1 usb_regs
实现了硬件抽象层,提供了 usb 寄存器操作函数集合。
函数有两种调用的方式:
- 作为宏:_ 调用方式是:函数名(参数1,2…)
- 作为子程序:调用方式:函数名(参数1,2…)
2.2 usb_int
处理正确传输的中断服务程序。
- 低优先级中断,由
CTR_LP()
处理,用于控制模式、中断模式、批量模式(单缓冲区) - 高优先级中断,
CTR_HP()
处理,用于快速传输模式,比如同步模式、批量模式(双缓冲区)
2.3 usb_mem
用户内存区(user memory area) 和 USB 模块内存区 PMA(packet memory area)直接拷贝数据。
void UserToPMABufferCopy(uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes);
void PMAToUserBufferCopy(uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes);
3 STM32_USB-FS_Device_Driver-medium Layer
3.1 usb_init
设备 usb 初始化函数和全局变量
3.2 usb_core
实现 USB2.0 规范
4 应用程序接口层
4.1 usb_bot.c
- BOT (Bulk Only Transport) 协议
- usb_bot.c是新出现的文件,这个文件只要是BOT的状态机,所谓的BOT其实就是仅限批量传输的意思,我们这里用到的是端点的仅批量传输的。这个文件对不同USB状态的做不同的操作。
- 参考
https://blog.csdn.net/codectq/article/details/17543657
https://www.cnblogs.com/shangdawei/archive/2013/06/13/3133526.HTML