STM32 USB固件库结构如下图所示:
可见,STM32 USB固件库分为3层:Low Layer、MediumLayer和High Layer,下面分析下这三层分别的角色:
1. Low Layer
usb_regs(.h.c):实现了硬件抽象层,提供了一个函数集合来操作USB外设寄存器,这个集合包括Commmomresister functions、Endpoint registerfunctions、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:
提供给开发人员应用接口
联系客服