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