完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我这边使用switch 语句处理Setup包,标准请求UsbSetupBuf->bRequestType应该是0x80,Vendor 的IN,OUT分别是0xC0、0x40才对,但是使用switch 的方法就是没办法枚举成功,系统频率是24M的,是处理速度太慢了吗?
switch语法如下: switch(SetReqtp) { case USB_REQ_TYP_STANDARD | USB_REQ_RECIP_DEVICE | USB_REQ_TYP_IN: 。。。。。。。。 case USB_REQ_TYP_VENDOR | USB_REQ_RECIP_DEVICE | USB_REQ_TYP_IN: 。。。。。。。。 case USB_REQ_TYP_VENDOR | USB_REQ_RECIP_DEVICE | USB_REQ_TYP_OUT: 。。。。。。。。 default :break; } |
|
相关推荐
7个回答
|
|
我这边使用dataflash即时存储收到的端点0的数据
|
|
|
|
80 06 00 01 00 00 40 00
00 05 0C 00 00 00 00 00 80 06 00 01 00 00 12 00 80 06 00 02 00 00 FF 00 80 06 00 03 00 00 FF 00 80 06 00 02 00 00 2F 00 00 09 01 00 00 00 00 00 C0 F5 00 00 00 00 07 00 40 AA 00 00 00 00 00 00 40 9C 11 15 22 D9 00 00 |
|
|
|
用if语句的数据都没有问题,switch语句的话就会卡在第二个80 06 00 02 00 00 FF 00 这里
|
|
|
|
|
|
|
|
这我清楚,端点0是位于xram的0x0000地址了的,CH552没法实时调试,我只能将接收到的Setup包数据临时存储到dataflash来分析的
|
|
|
|
是不是开优化了,SWITCH在优化级别高时可能会出错
|
|
|
|
不是优化问题,我目前是使用1级优化,另外,如果使用if语句先判断是否Vendor请求的话,会直接导致设备描述符无效
|
|
|
|
只有小组成员才能发言,加入小组>>
467 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2871 浏览 2 评论
2359 浏览 1 评论
810浏览 2评论
CH569通过HSPI实现USB3.0和FPGA高速双向通讯
637浏览 1评论
495浏览 1评论
CH32F103C8T6使用当前官网上的CDC例程会出现设备描述符请求失败
359浏览 1评论
633浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 03:01 , Processed in 1.516701 second(s), Total 91, Slave 74 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号