本人使用C8051F330单片机,写了个程序,考虑到功耗问题,需要进行内部高频振荡器和低频振荡器时钟切换 。
正常运行时时钟为内部低频
OSCLCN=0x80; // 内部低频频时钟8分频(11K)
while((OSCLCN&0x40)==0);
CLKSEL=0x02;
当要转换为高频时,
所写程序如下:
OSCLCN&=~0x80;
OSCICN=0x83; // 内部高频时钟24.5M
OSCICL+=4; // 时钟校准到24M
while((OSCLCN&0x40)==0);
CLKSEL=0;
由高频再转为低频时:
OSCICN&=~0x80;
OSCLCN=0x80; // 内部低频频时钟8分频(11K)
while((OSCLCN&0x40)==0);
CLKSEL=0x02;
系统时钟无法正常切换,为什么呢 ?望高手解答,万分感谢。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>