littlebot
Published on 2025-04-03 / 1 Visits
0

【源码】基于ARM Cortex M的STM32 USB设备驱动程序库

项目简介

libopencm3项目致力于为各类ARM Cortex - M微控制器打造开源固件库,目前已部分支持多种系列微控制器,如ST STM32多个系列、Atmel SAM系列、NXP LPC系列等。该库完全依据厂商的数据手册、编程手册和应用笔记从头编写,代码适配ARM的GCC工具链(arm - elf或arm - none - eabi),可借助OpenOCD ARM JTAG软件将代码烧录到微控制器中。本项目着重围绕STM32微控制器的USB设备驱动程序,提供完整解决方案。

项目的主要特性和功能

  1. 多微控制器支持:广泛适用于不同厂商、不同型号的ARM Cortex - M微控制器。
  2. USB设备驱动实现:具备USB设备驱动程序的初始化、配置和运行功能,针对特定STM32微控制器(如F107、F207、F429i等)有专门实现代码。
  3. 标准请求处理:usb_standard.c文件可处理USB标准请求,保证USB设备遵循标准通信协议。
  4. USB MSC支持:usb_msc.c文件实现USB Mass Storage Class,支持USB存储设备通信。

安装使用步骤

前提条件

  • Ubuntu/Fedora:需安装arm - none - eabi/arm - elf工具链,构建需要Python(部分代码由其生成)。
  • Windows:
  • 下载安装msys(http://sourceforge.net/projects/mingw/files/MSYS/Base/msys - core/msys - 1.0.11/MSYS - 1.0.11.exe)。
  • 下载安装Python(https://www.python.org/downloads/windows/ ,任意版本)。
  • 下载安装arm - none - eabi/arm - elf工具链(例如https://launchpad.net/gcc - arm - embedded )。
  • 运行msys shell,设置路径(需根据Python版本调整),避免Windows程序干扰: sh export PATH="/c//Program Files/Python 3.9:/c/ARMToolchain/bin:/usr/local/bin:/usr/bin:/bin"
  • 导航到提取libopencm3的文件夹并进行构建。

工具链

推荐使用“gcc - arm - embedded”(https://launchpad.net/gcc - arm - embedded ),建议使用4.8 2014q3或更新版本以成功构建libopencm3覆盖的所有平台。其他工具链理论上可行,但测试较少,针对Linux的工具链(如“gcc - arm - linux - gnu”)不适用。

构建

  • 普通构建: sh $ make
  • 若使用arm - elf工具链(不常见),可覆盖工具链前缀(默认是arm - none - eabi): sh $ PREFIX=arm - elf make
  • 详细构建: sh $ make V=1
  • 指定特定MCU系列以减少构建时间: sh $ make TARGETS='stm32/f1 stm32/f4'
  • 列出支持的目标: sh $ make list - targets

精细调整构建

可通过设置环境变量,用有限参数精细调整构建,例如: - 控制浮点ABI: sh $ FP_FLAGS="-mfloat - abi=soft" make # 无硬浮点 $ FP_FLAGS="-mfloat - abi=hard -mfpu=magic" make # 新的未知FPU - 添加或替换编译器标志: sh $ CFLAGS="-fshort - wchar" make # 以2字节宽的wchar_t编译库

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】