- 打卡等级:常住居民III
- 打卡总天数:162
- 最近打卡:2025-05-01 06:56:44
已绑定手机
荣誉版主
无情的代码机器
- 积分
- 2940
|
发表于 2025-3-19 08:33:40
|
显示全部楼层
USBCLK &= 0x60;
USBCLK |= 0x20;
这两句也有问题
你没配置 IRCBAND.SEL
默认6M的话,二分频变3M了,达不到输入PLL要求的8M~16M
参考:
CLKDIV = 0x04; //主时钟 MCLK四分频,144/4
IRCBAND &= ~(3<<6); //选择USB时钟为IRC48M
IRCBAND |= (2<<6);
IRC48MCR = 0x80; //启动内部48M USB时钟
while (!(IRC48MCR & 1)); //等待时钟稳定
IRCBAND |= 2; // IRCBAND.SEL 27MHz
USBCLK &= ~0x60; // PCKI 清空
USBCLK |= 0x20; //PCKI 二分频
CLKSEL |= 0x80; //CKMS,PLL 输出 12*12 ,144
CLKSEL &= 0xF0;
CLKSEL |= 0x04; //内部 PLL 输出,MCK2SEL 01,MCKSEL 00
USBCLK |= 0x80; //ENCKM
|
|