一、USB 的“JoyStickMouse”例程结构分析 1、例程的结构 (1)底层结构 包括5个文件:usb_core
c(USB 总线数据处理的核心文件),usb_init
c,usb_int
c(用于端点数据输入输入中断处理),usb_mem
c(用于缓冲区操作),usb_regs
c(用于寄存器操作)
它们都包含了头文件“usb_lib
在这个头文件中,又有以下定义: #include "usb_type
h" #include "usb_regs
h" #include "usb_def
h" #include "usb_core
h" #include "usb_init
h" #include "usb_mem
h" #include "usb_int
h" usb_lib
h 中又包含了七个头文件,其中 usb_type
h 中主要是用 typedef 为stm32支持的数据类型取一些新的名称
usb_def
h 中主要是定义一些相关的数据类型
还有一个未包含在 usb_lib
h 中的头文件,usb_conf
h 用于 USB 设备的配置
(2)上层结构 上层结构总共5个文件:hw_config
c(用于 USB 硬件配置)、usb_pwr
c(用于 USB 连接、断开操作)、usb_istr
c(直接处理 USB 中断)、usb_prop
c(用于上层协议处理,比如 HID 协议,大容量存储设备协议)、usb_desc
c(具体设备的相关描述符定义和处理)
可见,ST 的USB 操作库结构十分清晰明了,我先不准备直接阅读源代码
而是先利用 MDK 的软件模拟器仿真执行,先了解一下设备初始化的流程
2、设备初始化所做的工作 (1)Set_System(void) 这个是 main 函数中首先调用的函数,它位于 hw_config