MSP430定時(shí)器詳解
/*******************************************
函數(shù)名稱(chēng):InitClock
功 能:初始化時(shí)鐘函數(shù)
參 數(shù):無(wú)
返回值 :無(wú)
********************************************/
void InitClock()
{
unsigned int oscdly;
BCSCTL1 = ~XT2OFF; //------------清OSCOFF/XT2,使XT2振蕩器有效
do
{
IFG1 =~OFIFG; //------------清OFIFG
oscdly=255;
while(oscdly--); //------------延時(shí)等待
}
while(IFG1 OFIFG); //------------直到OFIFG=0為止
//-------------------------------------------------------------
DCOCTL |= DCO0 + DCO1 + DCO2; // Max DCO
BCSCTL1 |= RSEL0 + RSEL1 + RSEL2; // XT2on, max RSEL
//這兩句設(shè)置DCOCTL和BCSCTL1,設(shè)置DCO的頻率
//一般來(lái)說(shuō),PUC復(fù)位之后,如果沒(méi)有特定設(shè)置系統(tǒng)時(shí)鐘MCLK,MCU將默
//認(rèn)DCO振蕩器產(chǎn)生的頻率為系統(tǒng)時(shí)鐘,不過(guò)如果設(shè)置BCSCTL2來(lái)選定
//MCLK的時(shí)鐘源的話(huà)(如:BCSCTL2 |= SELM_2+SELS;)系統(tǒng)時(shí)鐘就是由
//XT2振蕩而來(lái).
//-------------------------------------------------------------
BCSCTL2 |= SELM_2+SELS; //SMCLK and MCLK uses XT2
//這一句設(shè)置BCSCTL2,選定MCLK和SMCLK的時(shí)鐘源
//注意:ACLK只能來(lái)源于LFXT1.可以在BCSCTL1里設(shè)置ACLK的分頻。
//-------------------------------------------------------------
}
/*******************************************
函數(shù)名稱(chēng):Timer_A
功 能:定時(shí)器A中斷服務(wù)子函數(shù),當(dāng)
參 數(shù):無(wú)
返回值 :無(wú)
********************************************/
// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
P3OUT ^= BIT4; // Toggle P3.4
}
[/td][/tr]
------------------------------
其實(shí)捕獲相當(dāng)于51的外部中斷?只不過(guò),MSP430里,把捕獲和定時(shí)器做在了一起。
評(píng)論