有用stm32f107 usb host2或者F4的HS USB,HOST读U盘成功的吗

Hi guys,I am in need of your help, unfortunately STs documentation is lacking some information here.I am basically trying to implement a USB device (CDC-ACM to be precise) that utilizes suspend/wakeup. I am using&the "STM32_USB-Host-Device_Lib_V2.1.0" and looked into the HID example for help.&Unfortunately there is no example that shows the USB HS with suspend/wakeup using an external ULPI. I am using the SMSC USB3300 ULPI chip with an external 24MHz crystal.The first thing that baffles me is in dcd_int.c:Below the function DCD_HandleUSBSuspend_ISR gets called on a suspend interrupt. This interrupt gets called successfully.
uint32_t USBD_OTG_ISR_Handler (USB_OTG_CORE_HANDLE *pdev)
if (gintr_status.b.usbsuspend)
retval |= DCD_HandleUSBSuspend_ISR(pdev);
Now, inside this function I see:
if((pdev-&cfg.low_power) && (dsts.b.suspsts == 1) &&
(pdev-&dev.connection_status == 1) &&
(prev_status
== USB_OTG_CONFIGURED))
switch-off the clocks */
The strange part now is, that I cannot find another reference of dev.connection_status, which gets tested in this if-statement, thus this variable never gets to 1 and I wonder why and what I am missing.Also prev_status (which gets set by dev.device_status) never equals USB_OTG_CONFIGURED which is defined as 3. It always is equal to 2, which is defined as USB_OTG_ADDRESSEDThis lead to the problem that obviously, the ULPI never went into the low power mode. I commented out the two non-reachable if-conditions and now I can see the USB3300 to stop its external 24MHz oscillator. I should note that I commented out the deepsleep part in this functionNow comes the second thing, I can not yet understand. As in the HID example, I activated the EXTI_Line20 and enabled the&OTG_HS_WKUP_IRQn in&USB_OTG_BSP_Init. Now when I disable my device in the windows device manager, I no longer see the SOF microframes on my oscilloscope. The suspend interrupt gets called and I disable the USB3300 clocks as shown above.&Unfortunately, the&OTG_HS_WKUP_IRQHandler gets called now immediately and with the call to USB_OTG_UngateClock enables the USB3300 clocks again. After some time, the HS core sees the suspend condition on the bus and goes to suspend AGAIN. This keeps repeating on and on.So I had some long looks into the Ref Man having the tongue at the right angle and read something like:EXTI line 20 is connected to the USB OTG HS (configured in FS) Wakeup eventSo I wondered: since I am using HS usb with external phy and the USB OTH HS core, is this even necessary for waking up? Maybe the strange behaviour is here?&The sad thing is, that I can't seem to find anything on people trying to use USB suspend with external PHYs.As far as I understood, the EXTI Line 20 is used to asynchronously detect any changes on the USB lines and feed it into the NVIC, which in turn knows that it has to call the&OTG_HS_WKUP_IRQHandler.Now since I am using the ULPI, I don't think this is valid anymore. However, there seems to be yet another instance of wakeup interrupts buried within the HS core: OTG_HS_GINTSTS contains an interrupt status flag for waking up:&WKUINTAnd now I am completely confused why there are so many configuraiton possibilites for the wakeup interrupt.&Again, since the documentation is lacking information on this (or I simply can not find it, though searching for some days now) I can not figure out, how to correctly implement USB HS wake up using the external PHY.This is why am I am searching for help here in the forum and hope someone can shed some light onto this. I am very much looking forward to any means of helping, thanks!EDIT at 14:58. Found this in the reference manual of the USB stack:Even if the #define USB_OTG_HS_LOW_PWR_MGMT_SUPPORT is uncommented, theUSB HID Device enters Low Power mode but cannot wakeup after a new Hostconnection.This behavior is normal since the wakeup signal in the USB OTG HS Core is availableonly when the USB OTG HS core is working in Full Speed mode.What exactly does that mean? Do I have to set the core into FS mode after suspend and then wait for wake up? Or should I use FS mode only?
HiYes, I cannot get it to work either.Im working on USB CDC/VCP."The strange part now is, that I cannot find another reference of dev.connection_status"Yes, you have to add#define VBUS_SENSING_ENABLEDto usb_conf.hto enable the connect/disconnect ISRs which then change the state."After some time, the HS core sees the suspend condition on the bus and goes to suspend AGAIN. This keeps repeating on and on."Yes, I got this as well.I have put in a request for help with our ST rep
Hi!I found the problem with dev.connection_status, you are right as in that I had to define#define VBUS_SENSING_ENABLED#define USB_OTG_INTERNAL_VBUS_ENABLED
to use with my USB3300 ULPI chip. Now i get the correct connection status in the suspend ISR.
In the meantime I managed to enumerate in Full Speed mode using the ULPI chip and my hope was, that suspend would work better here, as the USB library manual states. But I was disappointed, because I get the exact same behaviour as before:As soon as the device notices the suspend, it disables the clocks. But immediately after that, I get the wake interrupt and enter the loop I have described before.
I am somehow glad, that I am not the only one having this exact problem.
I found something else, that is rather curious: Why does "the" USBD_OTG_ISR_Handler contain this
if (gintr_status.b.wkupintr)
Although I could never get the HS core to set the wkupintr bit and execute the&OTG_HS_IRQHandler, although the mask bit in&GREGS-&GINTMSK is set (in USB_OTG_EnableCommonInt)And why does it even exist, when there is the&OTG_HS_WKUP_IRQHandler that is supposed to be used for waking?I guess I am doing something wrong regarding the wake up handling. Lets see what STM has to say about this.Bye!
For the sake of completeness, here is the contents of my Wakeup ISR Handler
void OTG_HS_WKUP_IRQHandler(void)
if(USB_OTG_dev.cfg.low_power) {
USB_OTG_CORE_HANDLE* pdev = &USB_OTG_
USB_OTG_GINTSTS_TypeD
USB_OTG_DCTL_TypeD
USB_OTG_PCGCCTL_TypeD
USB_OTG_UngateClock(&USB_OTG_dev);
/* Clear the Remote Wake-up Signaling */
devctl.d32 = 0;
devctl.b.rmtwkupsig = 1;
USB_OTG_MODIFY_REG32(&pdev-&regs.DREGS-&DCTL, devctl.d32, 0);
/* Inform upper layer by the Resume Event */
USBD_DCD_INT_fops-&Resume (pdev);
/* Clear interrupt */
gintsts.d32 = 0;
gintsts.b.wkupintr = 1;
USB_OTG_WRITE_REG32 (&pdev-&regs.GREGS-&GINTSTS, gintsts.d32);
uint32_t A = USB_OTG_READ_REG32(&pdev-&regs.PCGCCTL);
uint32_t B = USB_OTG_READ_REG32(&pdev-&regs.GREGS-&GINTSTS);
uint32_t C = USB_OTG_READ_REG32(&pdev-&regs.GREGS-&GUSBCFG);
NVIC_ClearPendingIRQ(OTG_HS_IRQn);
EXTI_ClearITPendingBit(EXTI_Line20);
&To be more precise: If i re-enable my USB device in the device manager again, and the host starts spitting out SOFs again, the STM32 breaks the loop (probably because the suspend function is not called anymore)
Just to let you know, I found something veeeery interesting in the code of the STM32CubeF4 here:/web/en/catalog/tools/PF259243#File:stm32cubef4.zip\STM32Cube_FW_F4_V1.1.0\Projects\STM324xG_EVAL\Applications\USB_Device\HID_Standalone\Src\usbd_conf.c
void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd)
__IO uint32_t i=0;
(hpcd-&Instance == USB_OTG_HS)
__HAL_USB_HS_EXTI_DISABLE_IT();
__HAL_PCD_GATE_PHYCLOCK(hpcd);
/*wait tiemout of 6 ULPI PHY clock ~= 18 cpu clocks @168MHz*/
for (i=0; i&18; i++)
if (__HAL_PCD_IS_PHY_SUSPENDED(hpcd))
/* when set then false resume condition*/
__HAL_USB_HS_EXTI_CLEAR_FLAG();
__HAL_USB_HS_EXTI_ENABLE_IT();
USBD_LL_Suspend(hpcd-&pData);
/*Enter in STOP mode */
if (hpcd-&Init.low_power_enable)
/* Set SLEEPDEEP bit and SleepOnExit of Cortex System Control Register */
SCB-&SCR |= (uint32_t)((uint32_t)(SCB_SCR_SLEEPDEEP_Msk | SCB_SCR_SLEEPONEXIT_Msk));
__HAL_PCD_GATE_PHYCLOCK(hpcd);
USBD_LL_Suspend(hpcd-&pData);
/*Enter in STOP mode */
if (hpcd-&Init.low_power_enable)
/* Set SLEEPDEEP bit and SleepOnExit of Cortex System Control Register */
SCB-&SCR |= (uint32_t)((uint32_t)(SCB_SCR_SLEEPDEEP_Msk | SCB_SCR_SLEEPONEXIT_Msk));
It looks like there are some specialties regarding HS core and suspending. As far as I can see, the EXTI line for wake up is deactivated while the HS core is put into suspend.
&And of course, THIS was the problem. I reverse engineered the code from the zip file and entered it into the usb stackI quote from usb_dcd_int.c:
static uint32_t DCD_HandleUSBSuspend_ISR(USB_OTG_CORE_HANDLE *pdev)
USB_OTG_GINTSTS_TypeD
USB_OTG_PCGCCTL_TypeD
USB_OTG_DSTS_TypeD
__IO uint8_t prev_status = 0;
prev_status = pdev-&dev.device_
USBD_DCD_INT_fops-&Suspend (pdev);
dsts.d32 = USB_OTG_READ_REG32(&pdev-&regs.DREGS-&DSTS);
/* Clear interrupt */
gintsts.d32 = 0;
gintsts.b.usbsuspend = 1;
USB_OTG_WRITE_REG32(&pdev-&regs.GREGS-&GINTSTS, gintsts.d32);
if((pdev-&cfg.low_power) && (dsts.b.suspsts == 1)
(pdev-&dev.connection_status == 1) )//&&
// (prev_status
== USB_OTG_CONFIGURED))
#ifndef USE_USB_OTG_HS
switch-off the clocks */
power.d32 = 0;
power.b.stoppclk = 1;
USB_OTG_MODIFY_REG32(pdev-&regs.PCGCCTL, 0, power.d32);
power.b.gatehclk = 1;
USB_OTG_MODIFY_REG32(pdev-&regs.PCGCCTL, 0, power.d32);
#define USB_HS_EXTI_LINE_WAKEUP
((uint32_t)0x)
/*!& External interrupt line 20 Connected to the USB HS EXTI Line */
/* Disable EXTI for wakupe */
EXTI-&IMR &= ~(USB_HS_EXTI_LINE_WAKEUP);
/* Gate PHY clock */
power.d32 = 0;
power.b.stoppclk = 1;
USB_OTG_MODIFY_REG32(pdev-&regs.PCGCCTL, 0, power.d32);
power.b.gatehclk = 1;
USB_OTG_MODIFY_REG32(pdev-&regs.PCGCCTL, 0, power.d32);
/* Wait timeout of 6 ULPI PHY clock. found this in STM324 HID eval code */
for (uint32_t i=0; i&18; i++) {
power.d32 = USB_OTG_READ_REG32(pdev-&regs.PCGCCTL);
if (power.b.phy_susp) {
/* Clear flag and enable IT */
EXTI-&PR = (USB_HS_EXTI_LINE_WAKEUP);
EXTI-&IMR |= (USB_HS_EXTI_LINE_WAKEUP);
/* Request to enter Sleep mode after exit from current ISR */
//SCB-&SCR |= (SCB_SCR_SLEEPDEEP_Msk | SCB_SCR_SLEEPONEXIT_Msk);
And everything works as expected. I suspect the culprit to be the missing 6 ULPI clock delays. If you look carefully in the USB3300 datasheet, it says that after disabling the clocks, the ULPI is active for another 5 (or something) clock cycles, before it eventually shuts down and feeds through the USB lines to the ULPI in order for the OTG HS core to monitor them for wake up.
阅读(...) 评论()STM32F407高速USB口速度测试
10:52:39来源: eefocus
&1,& 高速USB口,直接接USB3.0 U盘,金士顿DataTraveler G4,16G。读写文件长度字节。XP32系统。固件使用HS Device下的DualCore。
l&&&&&&&& 文件拷贝到U盘,用时3分钟。平均速度17.9MB/s=143Mbit/s
l&&&&&&&& 从U盘拷出,用时2分钟。平均速度26.9MB/s=215Mbit/s
l&&&&&&&& 文件从C盘拷贝,粘贴,用时2分钟。
可以看出,此时读写U盘已经是最大速度,这跟整个系统、U盘都有关系。USB操作应该没有经过MCU处理,直接用的USB缓冲区。
2,& 高速USB口,连SD卡(大卡),2G。读写文件长度字节。固件使用USB_Host_Device_ExamplesDRD,使用FATFS文件系统。
l&&&&&&&& 写入SD卡,用时15分钟。平均速度1.92MB/s=15.35Mbit/s
l&&&&&&&& 从SD卡读出,用时5;25。平均速度5.3MB/s=42.5Mbit/s
可以看出,缺省参数的MCU、SDIO、FAT极大地影响了读写速度。即便如此,平均速度已经大于FS的全速12Mbit/s通讯。
关键字:&&&&
编辑:什么鱼
引用地址:
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
微信扫一扫加关注 论坛活动 E手掌握
微信扫一扫加关注
芯片资讯 锐利解读
大学堂最新课程
TE工程师帮助将不可能变成可能,通过技术突破,使世界更加清洁、安全和美好。
TTI携TE传感器样片与你相见,一起传感未来
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
热门资源推荐
频道白皮书
何立民专栏
北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。21ic官方微信-->
后使用快捷导航没有帐号?
查看: 10163|回复: 24
有用STM32F2或者F4的HS USB,HOST读U盘成功的吗
&&已结帖(0)
主题帖子积分
实习生, 积分 33, 距离下一级还需 17 积分
实习生, 积分 33, 距离下一级还需 17 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
实习生, 积分 33, 距离下一级还需 17 积分
实习生, 积分 33, 距离下一级还需 17 积分
本帖最后由 yyts 于
10:23 编辑
用内部PHY,U盘枚举,mount都可以,就是在open里面出不来
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
实习生, 积分 33, 距离下一级还需 17 积分
实习生, 积分 33, 距离下一级还需 17 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
实习生, 积分 33, 距离下一级还需 17 积分
实习生, 积分 33, 距离下一级还需 17 积分
就是官方库里的例程改的,只改了一下print用串口输出.FS USB是可以的,就HS的不行.
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
主题帖子积分
专家等级:结帖率:31%打赏:0.00受赏:11.00
主题帖子积分
ST提供库中的例子,是建立在EVAL板上的,可以正常操作U盘。
I do not teach, but I coach. I do not feed, but I seed.
欢迎访问我的博客:/BLOG_OWNER_199055.HTM
主题帖子积分
实习生, 积分 33, 距离下一级还需 17 积分
实习生, 积分 33, 距离下一级还需 17 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
实习生, 积分 33, 距离下一级还需 17 积分
实习生, 积分 33, 距离下一级还需 17 积分
ST库中的例子是用外部PHY的吧.把宏定义换成USE_EMBEDDED_PHY.
&exploring disk flash&里面是注释掉了,不注释掉也会死在里面.
if(f_open(&file, &0:Host_Write_Demo.TXT&,FA_CREATE_ALWAYS | FA_WRITE) == FR_OK)
现在是在 f_open 里面出不来.
本帖子中包含更多资源
才可以下载或查看,没有帐号?
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
主题帖子积分
专家等级:结帖率:31%打赏:0.00受赏:11.00
主题帖子积分
使用内部PHY只能操作在FS模式,要使用HS模式必须要用外部PHY。
I do not teach, but I coach. I do not feed, but I seed.
欢迎访问我的博客:/BLOG_OWNER_199055.HTM
主题帖子积分
实习生, 积分 33, 距离下一级还需 17 积分
实习生, 积分 33, 距离下一级还需 17 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
实习生, 积分 33, 距离下一级还需 17 积分
实习生, 积分 33, 距离下一级还需 17 积分
是FS模式,HS OTG(像205只有HS OTG)的FS模式.
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
实习生, 积分 33, 距离下一级还需 17 积分
实习生, 积分 33, 距离下一级还需 17 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
实习生, 积分 33, 距离下一级还需 17 积分
实习生, 积分 33, 距离下一级还需 17 积分
USE_USB_OTG_HS,USE_EMBEDDED_PHY
用内部PHY,就是FS模式吧,要不然这个HS OTG的FS模式要怎么配置.
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
主题帖子积分
专家等级:结帖率:31%打赏:0.00受赏:11.00
主题帖子积分
是FS模式,HS OTG(像205只有HS OTG)的FS模式.
yyts 发表于
你说的不对。
STM32F207或F407中有2个USB模块:HS OTG和FS OTG
STM32F205或F405中只有1个USB模块:FS OTG
HS OTG有2种模式:HS模式和FS模式
I do not teach, but I coach. I do not feed, but I seed.
欢迎访问我的博客:/BLOG_OWNER_199055.HTM
主题帖子积分
实习生, 积分 33, 距离下一级还需 17 积分
实习生, 积分 33, 距离下一级还需 17 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
实习生, 积分 33, 距离下一级还需 17 积分
实习生, 积分 33, 距离下一级还需 17 积分
不对吧,205或405是只有 HS OTG 不是 FS OTG.
现在就是用205的 HS OTG 的FS模式,用的内部PHY.
本帖子中包含更多资源
才可以下载或查看,没有帐号?
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
主题帖子积分
专家等级:结帖率:31%打赏:0.00受赏:11.00
主题帖子积分
可以看看数据手册:
I do not teach, but I coach. I do not feed, but I seed.
欢迎访问我的博客:/BLOG_OWNER_199055.HTM
主题帖子积分
实习生, 积分 33, 距离下一级还需 17 积分
实习生, 积分 33, 距离下一级还需 17 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
实习生, 积分 33, 距离下一级还需 17 积分
实习生, 积分 33, 距离下一级还需 17 积分
本帖最后由 yyts 于
11:33 编辑
嗯,205只有 HS OTG.
现在问题是使用HS OTG,工作在FS模式,用内部PHY,只是不只要这样定义宏就可以了.
& USE_USB_OTG_HS , USE_EMBEDDED_PHY & .
如果是这样定义为什么 fopen里面不行,是还有哪些地方要改吗?
如果不是这样定义为什么 枚举,U盘容量大小这些都可以.
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
主题帖子积分
专家等级:结帖率:31%打赏:0.00受赏:11.00
主题帖子积分
嗯,205只有 HS OTG.
现在问题是使用HS OTG,工作在FS模式,用内部PHY,只是不只要这样定义宏就可以了.
& USE_USB_OTG_HS , USE_EMBEDDED_PHY & .
如果是这样定义为什么 fopen里面不行,是还有哪些地方要改吗?
yyts 发表于
嗯,我看错了,STM32F205只有HS OTG,惭愧 :L
I do not teach, but I coach. I do not feed, but I seed.
欢迎访问我的博客:/BLOG_OWNER_199055.HTM
主题帖子积分
主题帖子积分
专家等级:结帖率:47%打赏:1.80受赏:28.50
主题帖子积分
你这样用bushond抓一下包看看是不是有错误吧....
hs otg 有一个强制fullspeed设置...不设置就在握手失败后自动运行在full模式.
我熟悉这个ip.至于他是不是写出来了.我没看...
这个不是大问题....
qq群: 嵌入式系统arm初学者 ←← +→→←←
主题帖子积分
实习生, 积分 33, 距离下一级还需 17 积分
实习生, 积分 33, 距离下一级还需 17 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
实习生, 积分 33, 距离下一级还需 17 积分
实习生, 积分 33, 距离下一级还需 17 积分
这是用HOST模式,接U盘.不能用bushond抓包,就算抓包估计也看不懂.
应该已经工作在FS模式了吧,枚举,serial number,U盘容量这些都对了.
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
主题帖子积分
专家等级:结帖率:47%打赏:1.80受赏:28.50
主题帖子积分
yyts host的确不好测量 了...协议分析设备又挺贵....
你不要printf出来,直接打印到内存里,然后过段时间去内存查看....这样可以提高速度...
qq群: 嵌入式系统arm初学者 ←← +→→←←
主题帖子积分
实习生, 积分 33, 距离下一级还需 17 积分
实习生, 积分 33, 距离下一级还需 17 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
实习生, 积分 33, 距离下一级还需 17 积分
实习生, 积分 33, 距离下一级还需 17 积分
从官方例子改的,他是打印到LCD上的,只是改成串口.现在只是调试.
我板子上把FS OTG, HS OTG都引出来了,FS的直接就可以了,HS的就出这个问题.
如果把HS调出来就可以用205了,比207便宜好几块钱.
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
主题帖子积分
专家等级:结帖率:47%打赏:1.80受赏:28.50
主题帖子积分
你如果已经 验证过的代码,再跑出问题来,恐怕难度就不小了....
上面说明ep0没问题....其他ep不知如何
qq群: 嵌入式系统arm初学者 ←← +→→←←
主题帖子积分
主题帖子积分
专家等级:结帖率:47%打赏:1.80受赏:28.50
主题帖子积分
你跟踪一下open吧.看他怎么处理的....
qq群: 嵌入式系统arm初学者 ←← +→→←←
主题帖子积分
助理工程师, 积分 1054, 距离下一级还需 946 积分
助理工程师, 积分 1054, 距离下一级还需 946 积分
主题帖子积分
专家等级:结帖率:72%
主题帖子积分
助理工程师, 积分 1054, 距离下一级还需 946 积分
助理工程师, 积分 1054, 距离下一级还需 946 积分
搂主,你碰到的问题解决了吗?你是基于OTG 库的哪一个版本做的测试呢?
我试验的结果是v2.0.0可以,v2.1.0只能访问部分U盘。我使用FS端口(F4 discovery)
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
实习生, 积分 39, 距离下一级还需 11 积分
实习生, 积分 39, 距离下一级还需 11 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
实习生, 积分 39, 距离下一级还需 11 积分
实习生, 积分 39, 距离下一级还需 11 积分
205应该没有真正意义上的HS吧?他是工作在FS模式下!
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
荣誉元老奖章
等级类勋章
坚毅之洋流
发帖类勋章
时间类勋章
技术领袖奖章
人才类勋章
希望之星奖章
等级类勋章
甘甜之泉水
发帖类勋章
时间类勋章
技术奇才奖章
人才类勋章
技术高手奖章
人才类勋章

我要回帖

更多关于 stm32f103 usb host 的文章

 

随机推荐