关于STM32F102/103的USB模块和USB库函数

[复制链接]
49261|163
puchuang 发表于 2013-8-28 19:09 | 显示全部楼层
楼主   好强啊   需要好好膜拜   比较牛    顶一个
无冕之王 发表于 2013-8-28 19:28 | 显示全部楼层
讲解的通俗易懂
maqianzu 发表于 2013-9-4 14:06 | 显示全部楼层
很好很强大
lussby 发表于 2013-10-22 11:39 | 显示全部楼层
mark study! thank you!
lyl1011 发表于 2013-11-7 11:01 | 显示全部楼层
讲的太好了,谢谢
AD_DA 发表于 2013-11-28 15:50 | 显示全部楼层
受益匪浅
zeluo 发表于 2013-11-28 19:23 | 显示全部楼层
好**    楼主    这一块    了解的不多   需要花时间好好看看    楼主   谢谢你  
wp053341 发表于 2014-2-6 11:48 | 显示全部楼层
mark mark
翔飞云端 发表于 2014-3-19 16:48 | 显示全部楼层
楼主很轻大
hzq1976 发表于 2014-6-26 15:00 | 显示全部楼层
puqian 发表于 2014-7-11 07:19 来自手机 | 显示全部楼层
您好,您的QQ是多少,想联系下您,有偿帮助
xialei8513 发表于 2014-8-1 16:05 | 显示全部楼层
楼主怎么没有下文了?
jackem 发表于 2014-8-8 19:05 | 显示全部楼层
mark一下 ,以后翻阅
yunjie167 发表于 2014-8-9 09:43 | 显示全部楼层
本帖最后由 yunjie167 于 2014-8-9 09:44 编辑

讲的非常好啊!
我看了下我的USB Mass Store里的使用了端点0、1、2。
其中端点0使用了IN和OUT,1使用了IN,2使用了OUT。备注我的程序里所有缓冲区大小都是64B
usb_conf.h中有如下的宏定义:
#define EP_NUM              (3)
#define BTABLE_ADDRESS      (0x00)

/* EP0  */
/* rx/tx buffer base address */
#define ENDP0_RXADDR        (0x18)
#define ENDP0_TXADDR        (0x58)
/* EP1  */
/* tx buffer base address */
#define ENDP1_TXADDR        (0x98)

/* EP2  */
/* Rx buffer base address */
#define ENDP2_RXADDR        (0xD8)

正如楼主所说的,使用了3个端点,即Buffer Description Table 位于Packet Buffer的前24字节。

那么为了以后方便程序增加或减少端点,我可不可以写成这样:
#define EP_NUM                          (3)

/* buffer table base address */
#define BTABLE_ADDRESS      (0x00)

/* EP0  */
/* rx/tx buffer base address */
#define ENDP0_RXADDR        (EP_NUM*8+64*0)//(0x18)
#define ENDP0_TXADDR        (EP_NUM*8+64*1)//(0x58)

/* EP1  */
/* tx buffer base address */
#define ENDP1_TXADDR        (EP_NUM*8+64*2)//(0x98)

/* EP2  */
/* Rx buffer base address */
#define ENDP2_RXADDR        (EP_NUM*8+64*3)//(0xD8)

那假如现在我在Mass Store设备了,再增加一个HID设备,该设备有IN和OUT端点,分配为端点3为IN,4为OUT。
那么我是不是这样分配Packet Buffer:
#define EP_NUM                          (5)

/* buffer table base address */
#define BTABLE_ADDRESS      (0x00)

/* EP0  */
/* rx/tx buffer base address */
#define ENDP0_RXADDR        (EP_NUM*8+64*0)//(0x18)
#define ENDP0_TXADDR        (EP_NUM*8+64*1)//(0x58)

/* EP1  */
/* tx buffer base address */
#define ENDP1_TXADDR        (EP_NUM*8+64*2)//(0x98)

/* EP2  */
/* Rx buffer base address */
#define ENDP2_RXADDR        (EP_NUM*8+64*3)//(0xD8)

/* EP3  */
/* tx buffer base address */
#define ENDP3_TXADDR        (EP_NUM*8+64*4)

/* EP4  */
/* Rx buffer base address */
#define ENDP4_RXADDR        (EP_NUM*8+64*5)
STM32初学者 发表于 2014-8-30 09:31 | 显示全部楼层
楼主讲的不错,学习了
1398117027 发表于 2014-8-30 11:59 | 显示全部楼层
四年就更新了这么一点
小浣熊 发表于 2014-8-30 15:09 | 显示全部楼层
说的很好啊,感觉学到东西了!
布鲁诺 发表于 2014-10-13 12:48 | 显示全部楼层
很有用,还有其它有着USB作品吗
xieshifu 发表于 2014-10-21 19:59 | 显示全部楼层
dytrhjl 发表于 2014-10-31 21:48 | 显示全部楼层
前一阵子由于公司失误在家休息了一年,无意中玩了玩单片机,发现很有趣。过了一段时间发现51不能满足自己的一些想法,于是开始玩玩stm32,很是郁闷,有点无从下手的感觉。看了很多书看了很多协议看了很多代码,圈圈和百合电子都不错,但是这个**才是我想要看的,虽然还有点不明白但是感觉再看程序感觉很光明了。谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部