久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > MSP430F149 TIMER_A(一)——16位定時計數(shù)

MSP430F149 TIMER_A(一)——16位定時計數(shù)

作者: 時間:2016-11-24 來源:網(wǎng)絡 收藏
TIMER_A有四個可選時鐘源,為了方便一般選擇ACLK和SMCLK,經(jīng)過分頻器產(chǎn)生一個時基,其結(jié)構圖如下:

本文引用地址:http://cqxgywz.com/article/201611/320876.htm



TIMER_A有三種定時/計數(shù)方式:

(1).增計數(shù)模式:計數(shù)周期:TAR從0增加到TACCR0,



(2).連續(xù)計數(shù)模式:計數(shù)周期:TAR從0增加到0xffff,



(3).增減計數(shù)模式:計數(shù)周期:TAR從0增加到TACCR0然后再從TACCR0減到0



由上圖可見TIMER_A的中斷標志有兩個,分別是TAIFG和CCIFG。TACTL中的TAIE允許產(chǎn)生TAIFG中斷標志,中斷入口是TIMERA_1 VECTOR即0FFEAh,此入口有三個中斷源,由TAIV的值決定。

在IAR中,進入中斷服務的方式如下:

#pragma vector=中斷向量的入口地址

__interrupt void函數(shù)名(類型)

比如:

#pragma vector=0x14
__interrupt void my_handler(void);
TIMERA0_VECTOR是單中斷源的,因此不需要判斷
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A0 (void)
{
P4OUT^=BIT0;
}
既然TIMERA1_VECTOR由三種中斷源,則需要判斷,例子如下
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A1 (void)
{
switch(TAIV)
{
case 0x02:break;
case 0x04:break;
case 0x0a:P4OUT^=BIT0;break;
}
}


評論


技術專區(qū)

關閉