大奖娱乐官方网站_大奖娱乐老虎机_在线【大奖娱乐平台】

STM32学习笔记之USB库文件分析

2018-09-13来源: 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库文件

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

上一篇:STM32官方库文件分析及使用
下一篇:最后一页

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

推荐阅读

STM32外设函数分类

发表于 2018-09-13

利用STM32定时器的PWM输出功能,直接获取PWM波形

本实验向大家展示如何输出占空比固定的PWM波形。1.工程的建立:2.主函数代码:3.pwm_output.c代码:4.output.h代码:5.结果:6.结果显示不出来的请看上几节的文章,已解决。
发表于 2018-09-13

STM32的调试方式、更新程序、仿真以及补救措施

1. STM32的调试方式选择STM32支持JTAG和SWD两种调试方式,且默认状态下这两种调试功能都是开启的。由此我们可以知道:如果要使用JTAG调试功能,那么PB3,PB4,PA13,PA14,PA15都不能使用;而如果我们关闭JTAG功能,但是开启SWD调试功能,那么PB3,PB4,PA15都可以当作普通IO来使用了;ST官方3.5的库有提供关闭调试功能的两个接口:1.1 关闭所有的JTAG和SWD调试功能慎用,一旦执行该命令,程序运行后将不能通过JTAG或SWD方法进行烧写和下载,补救措施见文末。RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB
发表于 2018-09-13
热门资源推荐

小广播

最新视频课程

何立民专栏

单片机及嵌入式宝典

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

相关热搜器件

大奖娱乐官方网站世界版权所有 京ICP证060456号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright ? 2005-2018 EEWORLD.com.cn, Inc. All rights reserved
2018白菜网址大全 开户送体验金68 最新送彩金网站大全 注册送68体验金 注册送白菜网