STM32 USB固件库结构如下图所示:
可见,STM32 USB固件库分为3层:Low Layer、Medium Layer和High Layer,下面剖析下这三层别离的人物:
(1)Low Layer
usb_regs(.h,.c):完成了硬件笼统层,供给了一个函数调集来操作USB外设寄存器,这个调集包含Commmom resister functions、Endpoint register functions、Buffer description table functions和Double-buffered endpoints functions四个函数集;
usb_int(.h,.c):模块处理正确中止服务程序;它供给了USB协议事情与这个库的衔接,低优先级中止被CTR_LP()函数办理,用于操控形式、中止形式和批量形式(单缓冲区);高优先级中止被CTR_HP()函数办理,用于快速传输形式,像同步传输形式和批量形式(双缓冲区);
usb_mem.c(.h,.c):担任复制数据,从用户内存区到USB模块内存区(PMA)或许从USB模块内存区(PMA)到用户内存区;
(2)Medium Layer
usb_init(.h,.c):设置在整个库顶用的到的USB初始化函数和全局变量;
usb_core(.h,.c):整个库的核,它完成了USB2.0标准;
usb_sil(.h,.c):完成外围接口的笼统层,它供给的进程完成端点的读写;
(3)High Layer:供给给开发人员使用接口