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