打印
[STM32F1]

stm32 usb寄存器地址定义问题

[复制链接]
1049|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
JFIA|  楼主 | 2015-6-15 11:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#define _GetENDPOINT(bEpNum)        ((u16)(*(EP0REG + bEpNum)))

#define ENDP0   ((u8)0)
#define ENDP1   ((u8)1)
#define ENDP2   ((u8)2)
#define ENDP3   ((u8)3)
#define ENDP4   ((u8)4)
#define ENDP5   ((u8)5)
#define ENDP6   ((u8)6)
#define ENDP7   ((u8)7)

这个地址经过计算,偏移00h, 01h,02h……
沙发
JFIA|  楼主 | 2015-6-15 11:25 | 只看该作者
USB寄存器映像 ,寄存器和描述的不一样啊

使用特权

评论回复
板凳
香水城| | 2015-6-15 15:06 | 只看该作者
F1的USB库有两个,一个是最新的Cube库,一个是legacy的全速USB设备库。

顶楼代码是哪个库里的,请说明。

使用特权

评论回复
地板
香水城| | 2015-6-15 17:48 | 只看该作者
代码里是16位指针,因此每个端点的寄存器,即EPnR是2个字节地址的间隔,但这个是从AHB的角度。

而从手册上的register map表格看到的,间隔4个地址,是从APB角度来列出的。因为:

Due to the common limitation of APB1
bridges on word addressability, all register addresses are aligned to 32-bit word boundaries
although they are 16-bit wide.


使用特权

评论回复
5
icecut| | 2015-6-15 18:19 | 只看该作者
括号放错了吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝