MSP430的時(shí)鐘問(wèn)題一直是模模糊糊,老是忘記,于是決定寫下此文幫助記憶,以下內(nèi)容均參考網(wǎng)絡(luò)資料,僅供參考。
該MSP430系列單片機(jī)時(shí)鐘源有3種,分別為:
1.LFXT1CLK:低頻/高頻時(shí)鐘源,可外接晶體振蕩器,由于單片機(jī)內(nèi)部集成可供選擇的電容,則無(wú)需外接兩個(gè)振蕩電容器。較常使用的晶振為32768HZ,可選晶振范圍450KHZ-8MHZ。(工作在高頻模式下時(shí),需外接振蕩電容)
2.XT2CLK:高頻時(shí)鐘源,可外接晶體振蕩器,需外接連個(gè)振蕩電容器。較常使用的晶振為8MHZ,可選晶振范圍450KHZ-8MHZ。
3.DCOCLK:數(shù)字可控制的RC振蕩器,約800KHZ,它的頻率隨供電電壓和溫度變化而具有一定的不穩(wěn)定性。MSP430可以通過(guò)操作控制寄存器軟件調(diào)節(jié)來(lái)增強(qiáng)振蕩頻率的穩(wěn)定性。 當(dāng)LFXT1和XT2失效時(shí),DCO振蕩器會(huì)自動(dòng)被選作MCLK的時(shí)鐘源。振蕩器失效引起的NMI中斷請(qǐng)求可以得到響應(yīng),甚至在CPU關(guān)閉的情況下也可以。
該系列單片機(jī)提供3個(gè)時(shí)鐘輸出,分別為:
1.ACLK(Auxiliary clolck):輔助時(shí)鐘,由LFXT1CLK信號(hào)經(jīng)1、2、4、8分頻后得到。ACLK可由軟件選做各外圍模塊的時(shí)鐘信號(hào),一般用于低速外圍模塊。
2.MCLK(Main clock):主時(shí)鐘,由軟件選擇來(lái)自LFXT1CLK、XT2CLK、DCOCLK,然后經(jīng)過(guò)1、2、4、8分頻得到。MCLK主要用于CPU和系統(tǒng)。
3.SMCLK(Sub-Main clock):子系統(tǒng)時(shí)鐘,可由軟件選擇來(lái)自LFXT1CLK和DCOCLK(對(duì)于MXP430X11X和MSP430X12X)或者XT2CLK和DCOCLK然后經(jīng)過(guò)1、2、4、8分頻得到。SMCLK主要用于高速外圍模塊。
時(shí)鐘初始化例程:
PUC信號(hào)后DCOCLK被自動(dòng)選作MCLK時(shí)鐘信號(hào),根據(jù)需要MCLK的時(shí)鐘源可以另外設(shè)置為L(zhǎng)FXT1或者XT2.順序如下:
a)復(fù)位OSCOFF
b)清除OFIFG
c)延時(shí)等待至少50us
d)再檢查OFIFG,如果置位,則重復(fù)3,4步,直到OFIFG=0
void Initial_Crystal(void)
{
unsigned char i;
WDTCTL=WDTPW+WDTHOLD;//關(guān)閉看門狗
BCSCTL1 &= ~(XT2OFF + XTS);//使能XT2,LPXT1選擇低頻
BCSCTL2 = SELM_2 + DIVM_0 + SELS + DIVS_0;//主時(shí)鐘選擇XT2,子系統(tǒng)時(shí)鐘選擇XT2
do
{
IFG1&=~OFIFG;
for(i=0xff;i》0;i--);
}
while((IFG1&OFIFG)!=0);
}