USB倾情奉献(注释版)

2019-07-21 02:36发布

 花了一个多月,终于学会了USB,呵呵,感觉还是蛮头疼的,希望新手能够耐心的看,时间长了,自然就懂了, 1、STM32里面,USB设备是怎么接受USB主机发送的各种请求?接受以后存放在哪里??
答:根据地址和端点来接收请求,接收后一般存放在缓冲区,STM32芯片就有一个USB和CAN共享的专用缓冲区。即缓冲区描述表在USB_core.c下的u8 Setup0_Process(void)函数里面可以看到,刚开始的时候,看到了也不懂,现在懂了^_^
2、(*(volatile unsigned long *)
答:不懂的看这个http://www.openedv.com/posts/list/918.htm
3、USB的IO口需不需要复用,如果要复用,怎么设置呢?没发现手册上有讲啊,而且那2个口,PA11,PA12默认是IO口啊!怎么设置呢
答:在此部分代码用于实现我们在硬件设计部分提到的功能,USB的配置通过三个函数完成:USB_Interrupts_Config()、Set_USBClock()和USB_Init(),第一个函数用于设置USB唤醒中断和USB低优先级数据处理中断,Set_USBClock函数用于 配置USB时钟,也就是从72M的主频得到48M的USB时钟(1.5分频)。最后USB_Init()函数用于初始化USB,最主要的就是调用了Joystick_init函数,开启了USB部分的电源等。这里需要特别说明的是,USB配置并没有对PA11和PA12这两个IO口进行设置,是因为,一旦开启了USB电源(USB_CNTR的PDWN位清零)PA11和PA12将不再作为其他功能使用,仅供USB使用,所以在开启了USB电源之后不论您怎么配置这两个IO口,都是无效的。要在此获取这两个IO口的配置权,则需要关闭USB电源,也就是置位USB_CNTR的PDWN位。 
有什么问题,大家自己多思考下,这是我学习时候的问题,

http://www.openedv.com/posts/list/411.htm
这个帖子好像没人去看过。其实这个帖子对刚接触USB的新手有很大的帮助啊!
很多人都在学习USB,不妨大家拿出些心得,帮帮忙我们这些菜鸟吧!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。