MSP430單片機(jī)定時器學(xué)習(xí)筆記
msp430 定時器學(xué)習(xí)筆記
_BIS_SR(LPM2_bits + GIE) //進(jìn)入LPM3低功耗模式和開總中斷允許
中斷
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A(void)
{
}
TACTL timerA控制寄存器
TAR timerA計(jì)數(shù)器
CCTL0 捕獲/比較控制寄存器0
CCRO 捕獲/比寄存器0(具有最高中斷優(yōu)先級別,單獨(dú)使用一個中斷向量)
CCTL1 捕獲/比較寄存器1
CCR1 捕獲/比較寄存器1
CCTL2 捕獲/比較寄存器2
CCR2 捕獲/比較寄存器2
TAIV 中斷向量寄存器
其中,定時器,CCR2,CCR1三者共用一個中斷向量
TimerA輸出模式:
輸出模式0 輸出模式:輸出信號OUTx由每個捕獲/比較模塊的控制寄存器CCTLx中的OUTx位定義,并在寫入該寄存器后立即更新。最終位OUTx直通。
輸出模式1 置位模式:輸出信號在TAR等于CCRx時置位,并保持置位到定時器復(fù)位或選擇另一種輸出模式為止。
輸出模式2 PWM翻轉(zhuǎn)/復(fù)位模式:輸出在TAR的值等于CCRx時翻轉(zhuǎn),當(dāng)TAR的值等于CCR0時復(fù)位。
輸出模式3 PWM置位/復(fù)位模式:輸出在TAR的值等于CCRx時置位,當(dāng)TAR的值等于CCR0時復(fù)位。
輸出模式4 翻轉(zhuǎn)模式:輸出電平在TAR的值等于CCRx時翻轉(zhuǎn),輸出周期是定時器周期的2倍。
輸出模式5 復(fù)位模式:輸出在TAR的值等于CCRx時復(fù)位,并保持低電平直到選擇另一種輸出模式。
輸出模式6 PWM翻轉(zhuǎn)/置位模式:輸出電平在TAR的值等于CCRx時翻轉(zhuǎn),當(dāng)TAR值等于CCR0時置位。
輸出模式7 PWM復(fù)位/置位模式:輸出電平在TAR的值等于CCRx時復(fù)位,當(dāng)TAR的值等于CCR0時置位
TACTL
15-10 9 8 7 6 5 4 3 2 1 0
未使用 SSEL1 SSEL0 ID1 ID0 MC1 MC0 未使用 CLR TAIE TAIFG
定時器時鐘源選擇:
SSEL1 SSEL0
0 0 (特定外部信號)
0 1 (TASSEL0) ACLK
1 0 (TASSEL1) SMCLK
1 1 (INCLK)
通過MC1 MC0組合值來覺得TimerA的工作模式
0 0 停止模式。停止模式下,定時器不復(fù)位,回復(fù)工作后,按照停止時刻的狀態(tài)繼續(xù)運(yùn)行
如果需要情況,請使用TACTL中的CLR清空
0 1 增計(jì)數(shù)模式
TAR == CCR1的時候產(chǎn)生一次中斷。但是只有TAR == CCR0的時候,定時器才復(fù)位。(65535)
1 0 連續(xù)技術(shù)模式
0---0x0FFFH之后重新計(jì)數(shù)
1 1 增/減計(jì)數(shù)模式 先增,后減,產(chǎn)生堆成波形。
先到CCR0,然后減到0.周期翻倍。
對于更改CCR0的時
如果更改CCRO的值比之前大,則直接走到更改的值返回復(fù)位。
如果更改的值比之前的值小,分為2種情況:
1,此時時鐘處于高,則遇到下降沿立馬復(fù)位。
2.如果時鐘處于低,則在下一個時鐘周期下降沿復(fù)位(多往前走一個時鐘周期)
修改TAR CACTL 中CLR,CM0 CM1的時候,需要先停止計(jì)數(shù)器
//就是把當(dāng)前計(jì)數(shù)器TAR的值抓取放到CCRX當(dāng)中
當(dāng)CCTLx中的CAPx=1,該模塊工作在捕獲模式。這時如果在選定的引腳上發(fā)生設(shè)定的脈沖觸發(fā)沿(上升沿、下降沿或任意跳變),則TAR中的值將寫入到CCRx中。
當(dāng)捕獲完成后,中斷標(biāo)志位CCIFGx 被置位。
評論