datasheet

STM32F10X的USB固件库说明

2018-09-14来源: eefocus 关键字:STM32F10X  USB固件库

最底层
1)、usb_int.c,本文件包含两个中断服务函数CTR_LP()和CTR_HP(),在接收发送中断时使用这两个函数进行处理,这两个函数又调用各个USB端点处理函数,端点处理函数由用户自定义。
2)、usb_regs.c,本文件时硬件抽象层。它含有各种用于读取或设置USB寄存器的函数,相当于对寄存器操作方法的封装。
3)、usb_mem.c,本文件主要负责进行数据传输处理。它主要负责数据在用户区域(内存)或USB数据包缓冲区的互相转移。
中间层
1)、usb_core.c,本文件主要负责USB协议管理,如USB标准请求、各种端点0的控制信息处理。
2)、usb_init.c,本文件主要包含了USB初始化的函数。
3)、usb_sil.c,本文件包含精简接口的初始化或向端点读写的操作函数。
上层
1)、usb_pwr.c,该文件中包含处理上电、掉电、挂起和恢复事件的函数。
2)、usb_istr.c,该文件中只有一个函数,即USB中断的USB_Istr函数,该函数对各类引起USB中断的事件做轮询处理。
3)、usb_desc.c,该文件包含一些与USB相关的设备描述符、配置描述符等,以数组形式存储,在USB主机请求的时候这些信息将发送给主机。
5)、usb_prop.c,该文件用于实现相关设备的USB协议,如初始化、SETUP包、IN包、OUT包等。
6)、usb_endp.c,本文件包含端点收、发送的处理函数,由用户根据不同的USB设备进行不同的定义。
   USB的应用软件在这三层上,在不同的USB应用中,用户可能需要对USB固件库的上层部分文件配置进行修改(主要为usb_prop.c何usb_endp.c文件)。而中间层何底层封装的非常好,对
这些文件用户是不需要进行改动的。

关键字:STM32F10X  USB固件库

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/mcu/2018/ic-news091441323.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:如何使用ST官方库文件中的例子程序
下一篇:移植STM32固件库用于HID双向通信

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM32F10x系列UART中断异常调试经历

硬件环境: STM32F105RCT6软件环境:FreeRTOSV8问题描述:采用中断方式接收数据,然后将收到的一帧数据放入消息队列,然后有专门的一个任务用来从消息队列中取数据并处理。jlink调试以及烧录运行都是可以的,但是当随着通信频率的增加以及运行时间的加长,系统会出现“死机”(即,不停的进入中断而致使主程序流程无法执行);问题分析:根据现象猜测   1、是否为堆栈溢出了呢?  2、是否频率太高了呢? 3、是否标志位忘记没有清除呢?然后逐项进行测试:1、查htm文件确定大概需要的堆栈,发现确实存在溢出的可能:而我分配的为:然后更改为0x00000800,烧录测试,还是存在同样问题,然后在调试串口
发表于 2018-12-03
STM32F10x系列UART中断异常调试经历

STM32F10X硬件8MHz改为24MHz软件配置修改方法

1、单片机为STM32F103最快运行速度72MHz,系统默认使用8MHz外部时钟晶振,如果硬件采用24MHz晶振,软件就需要修改时钟配置,修改方法如下,我们用的硬件为STM32F10X_MD,并不是STM32F10X_CL,在static void SetSysClockTo72(void)函数中:#ifdef STM32F10X_CL    // Configure PLLs ------------------------------------------------------    // PLL2 configuration
发表于 2018-10-13
STM32F10X硬件8MHz改为24MHz软件配置修改方法

STM32F10x利用定时器测量脉冲宽度

  硬件:STM32F103C8T6  平台: ARM-MDk V5.11   前面一篇文章讲过如何利用定时器测量信号的频率(见[STM32F10x] 利用定时器测量频率),使用的是定时器的捕获/比较单元(Capture/compare),它也可以测量输入信号的脉冲宽度。  利用定时器测量脉冲宽度有两种方法。  方法1:  在捕获中断函数里改变捕获信号的触发沿(上升沿触发改为下降沿触发,或者下降沿触发改为上升沿触发),通过两次触发得到的计数器的差值,来计算出脉冲宽度。这种  方法需要定时器的配置和[STM32F10x] 利用定时器测量频率方法是一样的,不同的地方在中断函数里修改触发沿,以TIM2, 捕获通道2为例
发表于 2018-10-13

STM32启动文件分析——startup_stm32f10x_hd.s

一、启动文件的作用 (关于启动代码的作用,前面已经提到过了,这里再啰嗦一下)(1)初始化堆栈指针 SP;(2)初始化程序计数器指针 PC;(3)设置堆、栈的大小;(4)设置异常向量表的入口地址;(5)配置外部 SRAM作为数据存储器(这个由用户配置,一般的开发板可没有外部 SRAM);(6)设置 C库的分支入口__main(最终用来调用 main函数);(7)在 3.5版的启动文件还调用了在 system_stm32f10x.c文件中的SystemIni()函数配置系统时钟。 二、启动文件中提到的汇编指令指令作用EQU给数字常量取一个符号名,相当于 C 语言中的 defineAREA汇编一个新的代码段或者数据段
发表于 2018-10-06

stm32f2xx与stm32f10x在正交编码器应用定时器初始化中的区别

注意:如果stm32f2xx系列上面的网址的代码要做适当修改。以下说重点:stm32f2xx系列,在调试中对GPIO的初始化,切记选择GPIO_Mode_AF模式,即端口复用。随后,要做端口映射处理,即调用:GPIO_PinAFConfig()函数。这2个方式不选择,timer是不会有反应的本人是stm32f207,花了4天惨痛代价。以下贴代码:   /* Private define ------------------------------------------------------------*/#define ENCODER_TIMER      
发表于 2018-09-16

STM32的USB固件库中回调函数的使用

企图存储被调用函数地址的非法操作 __cdecl int(*p)(int) = callee; // 出错     指针p和callee()的类型不兼容,因为它们有不同的调用规范。因此不能将被调用者的地址赋值给指针p,尽管两者有相同的返回值和参数列。 二、在STM32中的回调函数的定义     上层程序调用下层函数是常规性的操作,而下层函数(usb_init相对于usb_prop是输入底层操作文件)调用上层文件函数我们称之为回调。回调函数的意义在于同一种操作模式、提供不同的回调函数则可以实现不同的功能。Windows中处理消息,好像也用到了这种模式。回调函数的实现方法
发表于 2016-09-26

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved
pt type="text/javascript" src="//v3.jiathis.com/code/jia.js?uid=2113614" charset="utf-8">