历史上的今天

今天是:2024年09月13日(星期五)

正在发生

2018年09月13日 | STM32学习笔记之USB库文件分析

发布者:pengbinyyy 来源: eefocus关键字:STM32  USB库文件 手机看文章 扫描二维码
随时随地手机看文章

主要分析下其他一些文件:

usb_core.c、

usb_init.c、

usb_int.c、

usb_mem.c、

usb_reg.c

usb_sil.c

1、

usb_core.c   --  这个文件从名字上就可知,这是usb的核心文件。这个文件主要是USB在枚举过程中的一些功能函数。比如控制传输的建立阶段、数据阶段、状态阶段的各种标准请求函数,各个阶段的处理函数等。


uint8_t Setup0_Process(void); uint8_t Post0_Process(void); uint8_t Out0_Process(void); uint8_t In0_Process(void); RESULT Standard_SetEndPointFeature(void); RESULT Standard_SetDeviceFeature(void); uint8_t*Standard_GetConfiguration(uint16_t Length); RESULT Standard_SetConfiguration(void); uint8_t *Standard_GetInterface(uint16_t Length); RESULT Standard_SetInterface(void); uint8_t *Standard_GetDescriptorData(uint16_t Length, PONE_DESCRIPTOR pDesc); uint8_t *Standard_GetStatus(uint16_t Length); RESULT Standard_ClearFeature(void); void SetDeviceAddress(uint8_t); void NOP_Process(void);

2、

usb_init.c     -   文件。这个文件很简单,只有一个函数:void USB_Init(void),这个函数也很简单,就是注册usb设备的基本信息:


/******************************************************************************* * Function Name : USB_Init * Description : USB系统初始化 * Input : None. * Output : None. * Return : None. *******************************************************************************/ void USB_Init(void) { pInformation = &Device_Info; //注册设备信息结构体 pInformation->ControlState = 2; //控制状态为IN_DATA pProperty = &Device_Property; //注册设备的常用一些函数结构体 pUser_Standard_Requests = &User_Standard_Requests; /* Initialize devices one by one */ pProperty->Init(); //注册初始化函数 }

至于pProperty->Init()这样的写法,就是执行pProperty这个结构体的Init函数指针指向的函数,我们在usb_prop.c的DEVICE_PROP Device_Property中曾注册过初始化函数CustomHID_init()。


3、

usb_int.c    -   文件,这个文件定义了两个中断中断服务程序:低优先级的端点正确传输中断服务程序void CTR_LP(void)和高优先级端点正确传输的中断服务程序void CTR_HP(void)。我们这个工程只使用了void CTR_LP(void)这个函数,CTR_LP在usb.istr.c文件的ISTR中断事件的中断服务程序USB_Istr中如果数据或请求正确传输正确就会被调用。

4、

usb_mem.c  -  主要有两个内存中的数据搬移函数:一个是从PMA缓冲区中拷贝数据到用户指定的内存空间PMAToUserBufferCopy(),很明显这个函数是在端点接收到数据后才会使用到的;另一个是从用户空间拷贝数据到PMA缓冲区中,在端点要发送数据数才会被调用。

5、

usb_reg.c  -    文件,是跟stm32的USB相关寄存器相关的代码。看这段代码就要阅读stm32寄存器了。这个函数定义了设置和读取各个寄存器的值或某位的值,具体的看代码。

6、

usb_sil.c   -   文件。端点具体的接发数据函数就在这里定义。这个文件也很简单,只有三个函数:USB_SIL_Init()初始化USB设备IP和端点;USB_SIL_Write()往选中的端点中写入数据;USB_SIL_Read()从选中的端点中读出数据


关键字:STM32  USB库文件 引用地址:STM32学习笔记之USB库文件分析

上一篇:STM32官方库文件分析及使用
下一篇:STM32F0在IAR新建工程

推荐阅读

中星技术股份有限公司(以下简称“中星技术”)近日在证监会网站发布了首次在创业板公开发行股票招股说明书。 招股书显示,中星技术拟在深证证券交易所上市,主承销商为中信建投。本次发行前,中星技术总股本为36,000.00万股,本次公开发行股数不超过1.2亿股,占发行后总股本比例不低于10%。全部为发行新股,不涉及股东公开发售股份。 邓中翰领衔,研发...
近日,历时两年多的台湾盛群半导体股份公司(以下简称“台湾盛群”)诉深圳市中微半导体有限公司(以下简称“深圳中微”)专利侵权纠纷一案终于尘埃落定。深圳市中级人民法院判决中微不侵权,驳回台湾盛群全部诉讼请求。深圳中微尊重知识产权,尊重一切竞争对手,同时爱惜公司的声誉!台湾盛群起诉深圳中微侵害其发明专利权的不正当竞争行为,已严重侵害深...
1.在CALL中调用已建立FOLGE程序. 2.CALL调用FOLGE程序: PGNO = PRG_NR$IN[1]TO $IN[8] Folgestarn打开Folge程序 -程序启动- SWITCH P_TYPE -程序使用类型选择 CASE 0 ;-以整数形式接受发出程序号 SWITCH PGNO CASE 10-如程序满足选择程序10 FOLGE10()-执行程序10 CASE 124 FOLGE124() CASE 125 FOLGE125() ENDSWITCH 3.程序...
从服务机器人到飞行机器人,从工业机器人到可以治病救人的微纳机器人,机器人正日益普遍地出现在人们身边,带来了更便捷的生活。记者从正在举行的世界机器人大会获悉,机器人与人类共存的时代已经到来,并不断突破传统探索智能生活的未来图景。飞行机器人上岗外卖物流业“未来机器人会不会像人一样无所不能?”清华大学计算机系教授孙富春在会上向记者称:...

史海拾趣

问答坊 | AI 解惑

SM6135S遥控车升压芯片

SM6135S是专为遥控车设计的大规模集成电路。有5个控制键控制遥控车的运动,它们分别是:前进、后退、向右、向左和加速这5个功能。芯片自带3.8V升压模块供用户选用。…

查看全部问答∨

嵌入式系统的动态电源管理技术

嵌入式系统的动态电源管理技术 作者:刘旭晖 Raymond转载请注明出处 Email:colorant@163.com BLOG:http://blog.csdn.net/colorant/ 主页:http://sites.google.com/site/rgbbones/ 在嵌入式系统中,电源的管理和功耗的控制,始终是一个 ...…

查看全部问答∨

mplayer安装过程与拾遗

以前我们安装mplayer的时候,往往参考了网上的教程,可是有些教程只是注重在自已本机的运行环境,可以正常安装.但是在初学者电脑里,情况就不一样了.甚至有些人不负责任,写的教程误导了初学者.之前我也走了不少弯路,但是从弯路中我慢慢弄清楚了安 ...…

查看全部问答∨

升压式高亮度LED背光驱动电路技术设计

中心议题: 升压电路设计特色升压电路操作模式驱动电路的线性调光能力闭回路控制电路的设计芯片补偿网络控制 升压电路设计特色    升压电路是用来驱动LED的串联电压高于输入电压(图 1),并且有以下的特色:    1.此电路可被设计在效 ...…

查看全部问答∨

关于SPI总线AD芯片TLC2543学习的一些问题

请各位用过的高手赐教哈~~ 1> 它说对于4.1MHz 的 I/OCLOCK,驱动源阻抗必须小于或等于 50Ω,而且用 60pF 电容来限制模拟输入电压的斜率 ,你们都接电容还保证50欧么? 2> Select test voltage:D7 D6 D5 D4 (Vref+ – Vref–)/2  ...…

查看全部问答∨

请教低功耗问题

本人是msp430系列的新手,现在主程序进入低功耗模式,通过中断唤醒后,中断返回时是不是依然处在原来开始设的低功耗模式下。还是处am模式下?高人指点。是在中断中修改低功耗模式还是在主程序中修改?如果返回后是在主函数中修改的话,还处在原来的 ...…

查看全部问答∨

关于MSP430FR5739

哈哈,我一直在 捣鼓ARM和 8bit MCU ,一直没有怎么关注MSP430 系列MCU,但是最近不一样啦,最近要开发一个手持式仪器!这带来一个新的挑战对我来说,因为不得不考虑系统功耗了,在环顾了所有8bit 16bit 32bit MCU后,感觉虽然各大厂商都在说自己的 ...…

查看全部问答∨

WKTR直线位移传感器

WKTR是微型自恢复式,特别适合空间狭小安装不便的场合。如:真空吹瓶机、IT设备、张力调节、速度调节、印刷机械、纸品包装机械。  外壳表面阳极处理,防腐蚀。 ●     内置导电塑料测量单元,无温漂,寿命长。 ●  ...…

查看全部问答∨

TI 官网LM3S9B96 中文数据手册

TI 官网LM3S9B96 中文数据手册 想要的赶紧下载啊!…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved