STM32 USB固件库结构如下图所示:

可见,STM32 USB固件库分为3层:Low Layer、Medium Layer和HighLayer,下面分析下这三层分别的角色:
(1)LowLayer usb_regs(.h,.c):实现了硬件抽象层,提供了一个函数集合来操作USB外设寄存器,这个集合包括Commmomresister functions、Endpoint register functions、Buffer descriptiontable functions和Double-buffered endpoints functions四个函数集; usb_int(.h,.c):模块处理正确中断服务程序;它提供了USB协议事件与这个库的连接,低优先级中断被CTR_LP()函数管理,用于控制模式、中断模式和批量模式(单缓冲区);高优先级中断被CTR_HP()函数管理,用于快速传输模式,像同步传输模式和批量模式(双缓冲区); usb_mem.c(.h,.c):负责拷贝数据,从用户内存区到USB模块内存区(PMA)或者从USB模块内存区(PMA)到用户内存区; (2)MediumLayer usb_init(.h,.c):设置在整个库中用的到的USB初始化函数和全局变量; usb_core(.h,.c):整个库的核,它实现了USB2.0规范; usb_sil(.h,.c):实现外围接口的抽象层,它提供的过程实现端点的读写; (3)High Layer:提供给开发人员应用接口
|