MSP430F5529是最新一代的具有集成USB的超低功耗單片機(jī),可以應(yīng)用于能量收集、無線傳感以及自動抄表等場合,是最低工作功耗的單片機(jī)之一。MSP430F5529開發(fā)板( MSP-EXP430F5529)是MSP430F5529單片機(jī)的開發(fā)平臺,由電源選擇開關(guān)、RF射頻接口、 microSD card插槽、MSP430F5529芯片及引出引腳、USB接口、JTAG仿真接口、齒輪電位計、電容觸摸按鍵、LED、按鈕、 EZ-FET內(nèi)置仿真器、102x64點陣LCD和三坐標(biāo)軸加速度計組成。該開發(fā)板將I/O引腳接出來,方便用戶進(jìn)行實驗操作,既可用于科研開發(fā),又適合實驗教學(xué)、課程設(shè)計、畢業(yè)設(shè)計等,為廣大高校師生提供了良好的實驗開發(fā)環(huán)境,同時也是廣大電子愛好者學(xué)習(xí)、開發(fā)MSP430系列單片機(jī)的良好平臺。
MSP430F5529共有兩類共4個定時器,分別是Timer_A定時器3個和Timer_B定時器1個,按照每個寄存器配備的捕獲/比較器的個數(shù)分別命名為Timer0_A(內(nèi)有5個捕獲比較器)、Timer1_A(3個)、Timer2_A(3個)、Timer0_B(7個)。
Timer_A定時器3個
定時器A是一個復(fù)合了捕獲/比較寄存器的十六位的定時(加減)計數(shù)器。定時器A支持多重捕獲/比較,PWM輸出和內(nèi)部定時,具有擴(kuò)展中斷功能,中斷可以由定時器溢出產(chǎn)生或由捕獲/比較寄存器產(chǎn)生。
特征簡介:
1、四種運(yùn)行模式的異步16位定時/計數(shù)器
2、自身時鐘源可選擇配置
3、最多達(dá)5個可配置的捕獲/比較寄存器(CCR)
4、可配置的PWM輸出
5、異步輸入和輸出鎖存
6、對所有Timer_A中斷快速響應(yīng)的中斷向量寄存器
TASSELx :時鐘源選擇。盡量不要選TASSEL0-TACLK外部時鐘源,因為如果TACLK和CPU時鐘不同步,很容易出問題。(TA0CLK接P1.0引腳)
00 TACLK 01 ACLK 10 SMCLK 11 ~TACLK
IDx:第一次分頻控制。ID0-1分頻;ID1-2分頻;ID2-4分頻;ID3-8分頻
MC:工作模式控制。(建議在修改定時器運(yùn)行模式前先停止定時器(中斷使能、中斷標(biāo)志、TACLR例外),以避免產(chǎn)生未知的誤操作。)
00 停止模式:定時器停止 01 增模式: 定時器計數(shù)到TACCR0 10 連續(xù)模式,定時器計數(shù)到0FFFH 11增減模式:定時器加計數(shù)到TACCR0然后減計數(shù)到0000H
TACLR:定時器清零位。該位置位會復(fù)位TA寄存器,時鐘分頻和計數(shù)方向。TACLR位會自動復(fù)位并置0
TAIE:定時器中斷使能 0:中斷禁止 1:中斷允許
TAIFG:中斷標(biāo)志位 0:沒有中斷發(fā)生 1:有中斷掛起
計數(shù)值存放寄存器TAR
1、顯然,最大存放計數(shù)值為0xFFFFh;
2、(類似51單片機(jī))可以被用來存放一個初值,然后選用連續(xù)模式。這樣不斷計滿再手動填充,從而達(dá)到精確計時的效果;
3、默認(rèn)為0,且對該寄存器可以直接賦值;
擴(kuò)展寄存器TAEX0
很簡單,這個寄存器就是為了控制時鐘源的二次分頻。
該寄存器的低3為定義為TAIDEX:000-111分別表示1-8分頻
捕獲/比較寄存器TACCR0-TACCR4(共5個)
比較模式下,用來設(shè)定計數(shù)終值;
捕獲模式下用來將捕獲的TAR值存放進(jìn)TACCRx中。
MC控制的四種工作模式的詳細(xì)講解
MC=0停止模式
這是系統(tǒng)默認(rèn)的模式,定時計數(shù)器禁止工作。
MC=1增模式
1、此模式下嚴(yán)禁從0xffff開始計數(shù);
2、注意從0計到TACCR0,實際上記了TACCR0+1個數(shù);
3、計到TACCR0后,會回到0重新開始計數(shù);
4、如果TAR的值大于TACCR0,這時候會立即從0開始計數(shù);
5、當(dāng)定時器計數(shù)到TACCR0的值時,中斷標(biāo)志CCIFG位(之后會講到)置位。當(dāng)定時器由TACCR0返回0時,TAIFG中斷標(biāo)志置位;
6、在定時器運(yùn)行時修改TACCR0,如果新的周期值大于或等于舊的周期值,或大于當(dāng)前的定時器計數(shù)值,那么定時器立刻開始執(zhí)行新周期計數(shù)。如果新周期小于當(dāng)前的計數(shù)值,那么定時器回到0。但是,在回到0之前會多一個額外的計數(shù)。
MC=2連續(xù)模式
在連續(xù)模式中,定時器重復(fù)計數(shù)到0FFFFH,然后重新從0開始增計數(shù)(除非每次重裝計數(shù)初值)。當(dāng)定時器從0FFFFH到0時,TAIFG中斷標(biāo)志置位。
應(yīng)用:連續(xù)模式下利用捕獲/比較器產(chǎn)生需要的時間間隔。原理是:計數(shù)在一直進(jìn)行,捕獲器TACCRX中存有第一個計數(shù)終值,每次捕獲器計到TACCRX時,會產(chǎn)生中斷標(biāo)志,我們可以在中斷服務(wù)函數(shù)中寫入一個計算好的下一個的計數(shù)終值,這樣無限計算和中斷下去,那么該捕獲器就會產(chǎn)生一個穩(wěn)定的時間間隔序列。(其實吧,不明白也沒關(guān)系。就算明白了,也不好用,因為計算起來很麻煩而且也不好用)
MC=3增減模式(常用于生成PWM波)
1、該模式下,計數(shù)方向是固定的,即讓定時器停止后再重新啟動定時器,它就沿著停止時的計數(shù)方向和數(shù)值開始計數(shù)。如果不希望這樣,就需要將TACLR置位來清除方向。TACLR位也會清除TAR的值和定時器的時鐘分頻。
2、當(dāng)定時器運(yùn)行時,改變TACCR0的值,如果正處于減計數(shù)的情況,定時器會繼續(xù)減到0,新的周期在減到0后開始。 如果正處于增計數(shù)狀態(tài),新周期大于等于原來的周期,或比當(dāng)前計數(shù)值要大,定時器會增計數(shù)到新的周期;如果新周期小于原來的周期,定時器立刻開始減計數(shù),但是,在定時器開始減計數(shù)之前會多計一個數(shù)。
Timer_B定時器1個
定時器B的簡介
Timer_B定時器特性:
?。?) 16位同步定時/計數(shù),4種工作模式可選、4中長度可選;
(2) 可選可配置時鐘源;
?。?) 高達(dá)7個捕獲/比較寄存器;
?。?) 可配置PWM輸出;
(5) 帶有同步裝載的雙緩沖比較寄存器;
與定時器A的比較(相同點與不同點)
?。?) TB的計數(shù)長度可以選擇(8、10、12、16BITS),而TA只有16位;
?。?) TB0CCRn寄存器是雙緩沖的,且可以分組;
?。?) 所有的TB輸出可以被設(shè)為高阻狀態(tài);
(4) TB沒有SCCI,即捕獲器輸入信號CCI沒有被鎖存;
?。?) 快速解碼的中斷向量;
Timer0_B寄存器介紹及設(shè)置
聲明:所有寄存器同樣支持字和字節(jié)操作
所有寄存器初始化都為0x0000
TB控制寄存器TB0CTL(最常用最基本)(和TA有一點不同)
rw-(0)表示默認(rèn)讀寫均為0
TBCLGGRP:TB0CLn分組控制
00:每個TB0CLn獨(dú)立使用
01:TB0CL1+TB0CL2作為一組(TB0CCR1的CLLD位控制整組數(shù)據(jù)更新)
TB0CL3+TB0CL4作為一組(TB0CCR3的CLLD位控制整組數(shù)據(jù)更新)
TB0CL5+TB0CL6作為一組(TB0CCR5的CLLD位控制整組數(shù)據(jù)更新)
10:TB0CL1、2、3一組,(TB0CCR1的CLLD位控制整組數(shù)據(jù)更新)
TB0CL4、5、6一組,(TB0CCR4的CLLD位控制整組數(shù)據(jù)更新)
11:TB0CL0、1、2、3、4、5、6整合為一組,
?。═B0CCR1的CLLD位控制整組數(shù)據(jù)更新)
CNTL:計數(shù)器長度控制
00 16位,即最大可以計到0FFFFh
01 12位,即最大可以計到0FFFh
10 10位,即最大可以計到03FFh
11 8位,即最大可以計到0FFh
TBSSEL :時鐘源選擇。盡量不要選TACLK外部時鐘源,因為如果TACLK和CPU時鐘不同步,很容易出問題。(TB0CLK接P7.7引腳)
00 TBCLK
01 ACLK
10 SMCLK
11 ~TBCLK
ID:第一次分頻控制。ID0-1分頻;ID1-2分頻;ID2-4分頻;ID3-8分頻
MC:工作模式控制。(建議在修改定時器運(yùn)行模式前先停止定時器(中斷使能、中斷標(biāo)志、TACLR例外),以避免產(chǎn)生未知的誤操作。)(和TA一樣)
00 停止模式:定時器停止
01 增模式: 定時器計數(shù)到TB0CCR0
10 連續(xù)模式,定時器計數(shù)到0FFFH(16位)…12位、10位…
11增減模式:定時器加計數(shù)到TB0CCR0然后減計數(shù)到0000H
TBCLR:定時器清零位。該位置位會復(fù)位TA寄存器,時鐘分頻和計數(shù)方向。
TACLR位會自動復(fù)位并置0
TBIE:定時器中斷使能
0:中斷禁止
1:中斷允許
TBIFG:中斷標(biāo)志位
0:沒有中斷發(fā)生
1:有中斷掛起
計數(shù)值存放寄存器TB0R
擴(kuò)展寄存器TBEX0
很簡單,這個寄存器就是為了控制時鐘源的二次分頻。
該寄存器的低3為定義為TBIDEX:000-111分別表示1-8分頻
捕獲/比較寄存器TBCCR0-TBCCR6(共7個)
比較模式下,用來設(shè)定計數(shù)終值;
捕獲模式下用來將捕獲的TBR值存放進(jìn)TBCCRx中。
捕獲/比較控制寄存器TB0CCTL0-TB0CCTL6:
CM:捕獲模式設(shè)定 00 不捕獲
01 上升沿捕獲
10 下降沿捕獲
11上升和下降沿都捕獲
CCIS:捕獲源的選擇 00 CCIxA
01 CCIxB
10 GND
11 VCC
SCS:同步捕獲源,設(shè)定是否與時鐘同步
0 異步捕獲
1 同步捕獲
CLLD:比較寄存器緩沖裝載模式選擇。
00 TB0CCRn的值(改變時)立即裝載到TB0CLn
01 當(dāng)TB0R的值計到0時,進(jìn)行裝載
10 增模式或者連續(xù)模式下,TBR0值計到0時,進(jìn)行裝載 ;
增減模式下,TBR0計數(shù)到TBCL0時,開始裝載;
11 TBR0計數(shù)到TBCL0時,開始裝載;
CAP: 0-比較模式 1-捕獲模式
OUTMOD:輸出模式控制位。同TA一模一樣
CCIE:中斷使能,該位允許相應(yīng)的CCIFG標(biāo)志中斷請求 。
0-中斷禁止 1 -中斷允許
CCI :捕獲比較輸入,所選擇的輸入信號可以通過該位讀取
OUT : 對于輸出模式0,該位直接控制輸出狀態(tài) 。
0-輸出低電平 1-輸出高電平
COV:捕獲溢出位。該位表示一個捕獲溢出發(fā)出,COV必須由軟件復(fù)位。
0-沒有捕獲溢出發(fā)生 1-有捕獲溢出發(fā)生
CCIFG:捕獲比較中斷標(biāo)志位。
0-沒有中斷掛起 1-有中斷掛起
中斷向量寄存器TB0IV
同TAIV一樣,里面存放一個數(shù)字編號。
TB和TA的不同之處
沒有再把CCI信號鎖存了
TA作捕獲器的時候,CCI為捕獲信號,然后CCI被鎖存輸出 為SCCI;
但是,TB沒有鎖存。也就是說只能從CCI位查看輸入信 號了。
計數(shù)值位數(shù)可調(diào)了(其實無所謂,都可以16位那干嘛不用)
TA的計數(shù)值寄存器TAR只能是16位(0XFFFFh);
TB的計數(shù)值寄存器TBR可以選擇是16、12、10、8位;
兩級緩沖比較器(比較模式下)
TA里面,我們在TACCRn中寫入要比較的數(shù)值,然后讓TAR中的計數(shù)值和TACCRn比較,如果相等了,相應(yīng)的標(biāo)志位就會置位;
TB里面,不僅有TB0CCRn,還多了一個二級緩存器TB0CLn。TB0CLn不能被直接進(jìn)行操作,它的值只能來源于TB0CCRn。計數(shù)的時候,TB0R中的計數(shù)值不和TB0CCRn比較,而是和TB0CLn進(jìn)行比較。
二級緩沖是為了防止我們在修改TB0CCRn的值的時候,對計數(shù)產(chǎn)生影響。因為計數(shù)器不直接和TB0CCRn比較,而是TB0CCRn把值賦給TB0CLn,由TB0CLn去和TB0R進(jìn)行比較。所以也就有了CLLD位控制比較寄存器緩沖裝載模式:(當(dāng)向TB0CCRn中重新寫數(shù)時)
00 TB0CCRn的值立即裝載到TB0CLn
01 當(dāng)TB0R的值計到0時,進(jìn)行裝載
10 增模式或者連續(xù)模式下,TBR0值計到0時,進(jìn)行裝載 ;
增減模式下,TBR0計數(shù)到TBCL0時,開始裝載;
11 TBR0計數(shù)到TBCL0時,開始裝載;
比較器可以被分組
TA沒有二級緩沖寄存器,而且本來的TACCRn也只能被單 獨(dú)使用。
對于TB:
TBCLGGRP:TB0CLn二級緩沖寄存器分組控制
00:每個TB0CLn獨(dú)立使用
01:TB0CL1+TB0CL2作為一組(TB0CCR1的CLLD位控制整組數(shù)據(jù)更新)
TB0CL3+TB0CL4作為一組(TB0CCR3的CLLD位控制整組數(shù)據(jù)更新)
TB0CL5+TB0CL6作為一組(TB0CCR5的CLLD位控制整組數(shù)據(jù)更新)
10:TB0CL1、2、3一組,(TB0CCR1的CLLD位控制整組數(shù)據(jù)更新)
TB0CL4、5、6一組,(TB0CCR4的CLLD位控制整組數(shù)據(jù)更新)
11:TB0CL0、1、2、3、4、5、6整合為一組,
?。═B0CCR1的CLLD位控制整組數(shù)據(jù)更新)
所謂的分組,就是該組的數(shù)據(jù)要同時更新。
以10模式下的TB0CL1、2、3這組為例:
TB0CCTL1中的CLLD設(shè)置為01,即TB0R計數(shù)到0時,TB0CCR1就會把值裝載(更新)到TB0CL2中,同時TB0CCR2就會把值裝載(更新)到TB0CL2中,同時TB0CCR3也會把值裝載(更新)到TB0CL3中。無論TB0CCRn中的值有幾個發(fā)生了變化,但它們都只會同時更新TB0CLn。
評論
查看更多