MCU UPD78F0527的三种系统时钟

控制/MCU

1879人已加入

描述

时钟发生器用于产生时钟,并提供给CPU和外部硬件设备。

UPD78F0527有如下三种系统时钟。

(1)主系统时钟

①通过连接一个振荡器到X1和X2,该振荡电路产生fx=1到20MHZ的时钟;

②使用内部高速振荡器产生fRH=8MHZ的时钟。

(2)副系统时钟

①通过在XT1和XT2之间连接一个fXT=32.768KHZ的振荡器;

②通过XT2引脚提供一个外部副系统时钟fexclks=32.768KHZ。

(3)内部低速振荡时钟(看门狗定时器时钟)

①内部低速振荡器,以fRL=240KHZ的时钟振荡。该时钟不能作为CPU时钟。

在电表掉电时CPU选择使用副系统时钟。

如果一个变量只有几种可能的值。则可以定义为枚举类型。所谓“枚举”是指将变量的值一一列举出来,变量的值只限于列举出来的值得范围。

如下CPU_CLK的值只能是CPU_8M或CPU_32K;

typedef enum

{    CPU_8M,    

CPU_32K

}enum_CPU_CLK;

extern volatile enum_CPU_CLK CPU_CLK;

void Clock_use_8M(void)

{    

OSCCTL=0b00110000;  //X1&X2 pin used as IO,1Mhz

PCC = 0b00000000;   //Set internal high-speed oscillator fck=8MHz,(default value fck=4MHz),XT1 used as IO,XT2 used as CLK input    

RCM = 0x00;         //Internal low&high speed oscillator run,wait internal high-speed stable    

CPU_CLK = CPU_8M;    

while(CLS)          //wait CPU clock used main system clk     

{        

NOP();    

}

}

void Clock_use_32k(void)

{    

BitSet(PCC, 0x10); //uses subclk 32k/2 as the program clk    

CPU_CLK = CPU_32K;    

while(!CLS)    

{        

NOP();

}    

BitSet(RCM,0x01); //STOP INTERNAL CLK

}

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分