求教STM32F103 16MH晶振如何配置USB虚拟串口

2019-12-27 18:58发布

前几天看见有大神用USB虚拟3COM,我用8M晶振的开发板可以通过,但是用16MHZ的晶振就不行,
用3.5的库,修改了2个地方,把外部晶振频率8M改16M,

1.  #define HSE_VALUE    ((uint32_t)16000000) /*!< Value of the External oscillator in Hz */
2. /*  PLL configuration: PLLCLK = HSE * 9 = 72 MHz */
    RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE |
                                        RCC_CFGR_PLLMULL));
    RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);
在8M晶振配置上(以上代码) 增加以下代码
    if(HSE_VALUE==16000000UL)
    {   RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_HSE_Div2);   // 16M2分频即8M,PLL=8M*9=72M
        RCC->CFGR&= ~RCC_CFGR_USBPRE;                //  USB时钟72M/1.5=48M       
    }

这样修改后USB虚拟COM还是失败,但是用USART1串口打印的数据都正确,波特率也一样没错,那就证明PLL=72M是没错了,可是就是不明白USB识别不了
用回8M的开发板只修改#define HSE_VALUE    ((uint32_t)8000000) 就正常,证明枚举过程的程序没有错,我估计是USB时钟配置存在问题,但是看手册该改的地方都改了,
实在想不明白还有什么地方遗漏,特来请教各位大神,我这程序到底是漏什么地方没修改
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
way2888
1楼-- · 2019-12-29 00:24
takashiki 发表于 2017-6-2 22:20
STM32不支持USB低速设备哦,所以应该是不行的。
也许可以将USB时钟搞到6MHz来支持低速设备(系统时钟6M/9 ...

商家告诉我以前都可以,跟他要可以的配套的例程,他说弄丢了,结果我没怀疑是板的电路问题,今天特意把8M换16M,用我修改的程序直接pass,真是火大,害我在这个地方纠缠了2天,不过还是很感谢你们的回复

一周热门 更多>