- Navigation (`・ω・´)
- house主页
- 作品
- 暮光小猿图片管理器2
- av_timerSC 科学创造
- 记录
- videocam没事瞎折腾系列
- devices隔壁老王210
- devicesLinux嵌入式
- 关于
- archive更新日志
- restore历史版本
哔哩哔哩 - ( ゜- ゜)つロ 乾杯~
实验环境
- 单片机: STM32F103C8T6
- 编辑器: code
- 编译器: gcc 8
相关资料
- USB 2.0 Specification (只要里边的usb_20.pdf)
- 旧版STM32F1 USB设备库 (STM32_USB-FS-Device_Lib)
- STM32F1参考手册 (RM0008-Rev.21)
- 本章节程序源码参考
F1入坑三步
- 复制库
- 初始化
- 配置(描述符,端点,缓冲区)
1. 复制库
- 复制
STM32_USB-FS-Device_Lib/Libraries/STM32_USB-FS-Device_Driver
中的src
和inc
到工程 - 复制本章节示例工程中简化好的配置(
usb_conf.h
,usb_istr.c
,usb_prop.c
)到工程
2. 芯片初始化
- 开启GPIO时钟
- 配置PA11/12复用模式
- 配置USB中断优先级
- 设置USB时钟1.5分频(72/1.5=48MHz)
- 开启USB时钟
3. 库初始化
- 在主文件中加入
usb_lib.h
头文件 - 在主函数中初始化完成后调用
USB_Init()
函数 - 编辑库中的
usb_lib.h
头文件,替换hw_config.h
为stm32f10x.h
- 配置
usb_prop.c
中Device_Table结构体中总端点数和总配置数(本工程只有端点0和一个配置,所以设置为1和1)
4. 库设备配置
- 复制上一章节的设备描述符和配置描述符,修改
bMaxPacketSize0
与usb_prop.c
中Device_Property
结构体的MaxPacketSize
一致 - 分配USB收发缓冲区(具体配置方法说明还在咕~~,可自行参考手册第628页图221研究)