Cortex M3 如何单独设置 USB 部分的时钟?

当系统时钟按

SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |               SYSCTL_XTAL_8MHZ);

设置时,USB 无法正常通信。若将时钟设置改成:

ROM_SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |
                       SYSCTL_XTAL_8MHZ);

后,则USB能正常收发数据。

由于程序中涉及到其他外设,故不能修改系统时钟。有没有单独设置USB 模块控制时钟的方法?

  • Luying Qiang :

    可以单独操作寄存器呀。参考芯片手册中有关时钟设置,USB PLL以及系统时钟框图等相关说明,结合相关寄存器操作说明就可以实现单独设置USB的时钟

  •  USB工作时,系统时钟要求25M以上,使能USBPLL就可以了,如楼主所述第一种设置主频为8M,故USB不能正常工作,第二种,系统时钟为50M,故USB能够正常工作.

  • 嗯,确实可以。我在初始化USB时,添加语句:

    SysCtlUSBPLLEnable();//USB PLL enable

    USB就能正常工作了。谢谢