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:提供给开发人员应用接口
关键字:STM32 USB
引用地址:
STM32 USB固件库结构
推荐阅读最新更新时间:2024-03-16 14:40
意法半导体推出功率量程更大的STM32 烧录调试器,赋能下一代超低功耗应用
2023 年 4 月 25 日,中国 – STLINK-V3PWR是意法半导体新推出的一款在线调试烧录器,能够准确地测量在任何一款STM32 微控制器 (MCU) 上运行的应用的功耗。 该产品的宽动态量程能够处理物联网和无线应用等功耗敏感的开发项目,可测量从纳安到 500mA 的电流值,测量准确度保持在±0.5%。此外,该产品用一条 USB 数据线就可以为目标系统提供最高2A的电流,开发人员无需再单独连接一个电源为电路板供电。 STM32CubeMonitor-Power图形工具直接支持STLINK-V3PWR ,能够实时图显应用的功率需求量,分析设计变更对功耗的影响,以便提高能效。此外,Arm® Keil® 开发工
[单片机]
欧盟宣布:2024年起所有电子设备全部采用USB-C
“漫长的等待终于结束了。”日前欧盟委员会正式宣布,从2024年起,USB-C将成为欧盟电子设备的通用标准。 “这意味着更好的充电技术、减少电子垃圾以及更轻松地寻找所需的充电器! ”欧盟委员会说。 据了解,USB-C将作为欧盟通用接口,允许消费者使用任何USB-C充电器为任何品牌设备充电。 欧盟的这一要求将适用于所有手持手机、平板电脑、数码相机、耳机、便携式扬声器、手持式电子游戏机、电子阅读器、耳塞、键盘、鼠标和便携式导航系统。 到2026年,这一要求也将适用于笔记本电脑。 统一USB-C接口的过程并不简单。据报道,2009年市面上最多曾出现过30多种充电接口,鱼龙混杂。当时,在欧盟委员会的督促下,包括苹果在内的14家手机制造商
[手机便携]
STM32单片机和51单片机区别
单片机简介 单片微型计算机简称单片机,简单来说就是集CPU(运算、控制)、RAM(数据存储-内存)、ROM(程序存储)、输入输出设备(串口、并口等)和中断系统处于同一芯片的器件,在我们自己的个人电脑中,CPU、RAM、ROM、I/O这些都是单独的芯片,然后这些芯片被安装在一个主板上,这样就构成了我们的PC主板,进而组装成电脑,而单片机只是将这所有的集中在了一个芯片上而已。 51单片机和STM32单片机 51单片机是对所有兼容Intel8031指令系统的单片机的统称,这一系列的单片机的始祖是Intel的8031单片机,后来随着flash ROM技术的发展,8031单片机取得了长足的进展成为了应用最广泛的8bit单片机之一,他的代表型
[单片机]
STM32系列可以通过FMSC接口来实现外扩并口SRAM
STM32MCU一般情况下配置有1~2MB双块Flash存储器和256KB SRAM,在某些应用设计中会出现内置RAM不足的情况,需要对STM32单片机进行外扩RAM的处理,可以选择更换更高RAM容量的单片机,除了价格贵还需要涉及其他被动器件的更改,STM32系列可以通过FMSC接口外扩并口SRAM,比如采用ISSI的IS62WV51216。 IS62WV51216 SRAM芯片是一个8M容量,组织结构为512K*16的高速率低功耗静态随机存储器。IS62WV51216高性能CMOS工艺制造。高度可靠的工艺水准再加创新的电路设计技术,造就了这款高性能,低功耗的器件。使用IS62WV51216的片选引脚和输出使能引脚,可以简单实
[单片机]
STM32通信接口(一)串口
什么是串口 毫无疑问,串口是我们接触到的第一种通信接口,无论是串口调试还是与外设的通信,串口的用途十分广。 关于同步和异步,最简单的区分方法就是看在通信时需不需要接时钟线,像SPI、I2C等通信接口都需要接CLK线,毫无疑问它们都是同步的,而串口是一种拥有两种模式的通信接口,可以选择是否连接时钟线。至于串行和并行,区分的方法就是看数据是一位一位的发送还是以一个字节(8位)或16位的格式发送,显然并口的数据线就要多的多,而串行接口的数据线就少的多,若只发送或只接受(单工),一根数据线就够了,半双工或全双工的通信接口也一般只需要两条数据线。 UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收
[单片机]
uclinux下stm32开发环境搭建
什么是uclinux uclinux表示micro-control linux.即“微控制器领域中的Linux系统”,是Lineo公司的主打产品,同时也是开放源码的嵌入式Linux的典范之作。uCLinux主要是针对目标处理器没有存储管理单元MMU(Memory Management Unit)的嵌入式系统而设计的。它已经被成功地移植到了很多平台上。由于没有MMU,其多任务的实现需要一定技巧。 uClinux是嵌入式Linux领域非常重要的分支,已成功应用于路由器、机顶盒、PDA等领域,与标准Linux在内存管理方面有着本质的区别。 uCLinux是一种优秀的嵌入式Linux版本,是micro-Controll
[单片机]
stm32 的定时器4产生PWM
利用PB9产生PWM信号 一、引脚初始化 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOB, &GPIO_InitStructure); 二、定时器初始化 void TIM4_Config(void) { // GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef T
[单片机]
stm32电机驱动与测速
通过实验发现,定时器的一个通道控制一个pwm信号。 PWM驱动电机不需要中断。 ① timer.h: #ifndef __TIMER_H #define __TIMER_H #include “sys.h” void TIM3_PWM_Init(u16 arr,u16 psc); #endif ② timer.c: #include “timer.h” #include “led.h” void TIM3_PWM_Init(u16 arr,u16 psc) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitT
[单片机]