版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、(一)上海大學(xué)樂乎博客 > 落葉遍地 > 轉(zhuǎn)帖先轉(zhuǎn)一篇開個(gè)頭:這樣快速闖入MSP430學(xué)習(xí)過程2013/8/20 15:15:20 | 轉(zhuǎn)帖先轉(zhuǎn)一篇開個(gè)頭:這樣快速闖入MSP430學(xué)習(xí)過程/*部分說法我覺得還是很不錯(cuò)的*/為想學(xué)MSP430單片機(jī)的初學(xué)者,或者,你是剛轉(zhuǎn)到電子硬件嵌入式開發(fā),如果你的電子基礎(chǔ)課程已經(jīng)完成,想盡快掌握MSP430單片機(jī),又糾結(jié)于怎樣盡快闖入MSP430學(xué)習(xí)過程的問題,現(xiàn)總結(jié)整理出新手開始學(xué)習(xí)MSP430的一些問題,和學(xué)習(xí)中有關(guān)注意事項(xiàng)和方法。 供有心學(xué)習(xí)MSP430單片機(jī)的童鞋參考吧。
2、160; 當(dāng)然,闖入MSP430學(xué)習(xí),你需要有一些單片機(jī)的理論基礎(chǔ),和比較強(qiáng)的C語言功底,學(xué)習(xí)MSP430單片機(jī)最好的方法是文武并進(jìn):“文”指學(xué)好片內(nèi)模塊的資源知識;“武”則指動(dòng)手能能力。基礎(chǔ)知識+動(dòng)手實(shí)操,是一個(gè)非常有效的學(xué)習(xí)方法。文武并進(jìn)必能學(xué)有所成。 進(jìn)入各個(gè)電子產(chǎn)品公司的網(wǎng)站,招聘里面嵌入式占據(jù)了大半工程師職位。 廣義的嵌入式無非幾種:傳統(tǒng)的什么51單片機(jī)、 MSP430稱做嵌入式微控制器;ARM是嵌入式微處理器;當(dāng)然還有DSP;FPGA。我們現(xiàn)在就不說別的,就說MSP
3、430單片機(jī),多數(shù)想學(xué)MSP430的童鞋,對89C51內(nèi)核系列的單片機(jī)是很熟悉的,為了加深對MSP430 系列單片機(jī)的認(rèn)識嗎,迅速闖入MSP430學(xué)習(xí)過程,就必須徹底了解MSP430單片機(jī),我們不妨將51單片機(jī)和MSP430兩者進(jìn)行一下比較。 第一點(diǎn), 51內(nèi)核單片機(jī)是8 位單片機(jī)。其指令是采用的被稱為“ CISC ”的復(fù)雜指令集,共具有111 條指令。而MSP430 單片機(jī)是16 位的單片機(jī),采用了精簡指令集( RISC )結(jié)構(gòu),只有簡潔的27 條指令,大量的指令則是模擬指令,眾多的寄存器以及片內(nèi)數(shù)據(jù)存儲(chǔ)器都
4、可參加多種運(yùn)算。這些內(nèi)核指令均為單周期指令,功能強(qiáng),運(yùn)行的速度快。 第二點(diǎn),MCU主要分為兩種工作模式:待機(jī)與執(zhí)行。51內(nèi)核單片機(jī)正常情況下消耗的電流為mA級 ,在掉電狀態(tài)下,其耗電電流仍約為3mA左右 ;即使在掉電方式下,電源電壓可以下降到2V ,但是為了保存內(nèi)部RAM 中的數(shù)據(jù),還需要提供約50uA的電流。 而430單片機(jī)功耗是在uA級的,工作電流極小,并且超低功耗,關(guān)斷狀態(tài)下的電流僅為0.1A,待機(jī)電流為0.8A,常規(guī)模式下的(25
5、0A1MIPS3V),端口漏電流不足50 nA,并可零功耗掉電復(fù)位(BOR)。另外,該芯片屬低電器件,僅需1.83.6V電壓供電,因而可有效降低系統(tǒng)功耗。MSP430將低功耗模式擴(kuò)展為7種,分別對應(yīng)不同應(yīng)用場合及任務(wù)的低功耗方式。以睡眠模式為例,包括深度睡眠模式RTC:只有時(shí)鐘在跑而其他都不動(dòng),目前,TI宣布其MSP430在RTC模式下最低功耗僅為360nA。同時(shí)也包括諸如液晶顯示驅(qū)動(dòng)等需要幾十毫秒刷新一次的間歇性睡眠模式。所以,MSP430 的超低功耗更適合應(yīng)用于使用電池供電的儀器、儀表類產(chǎn)品中。 第三點(diǎn), 51內(nèi)核單片機(jī)由于其內(nèi)部
6、總線是8 位的,受其結(jié)構(gòu)本身的限制很大,模擬功能控制功能受限制。MSP430 系列其基本架構(gòu)是16 位的,同時(shí)在其內(nèi)部的數(shù)據(jù)總線經(jīng)過轉(zhuǎn)換還存在8 位的總線,在加上本身就是混合型的結(jié)構(gòu),因而對它這樣的開放型的架構(gòu)來說,無論擴(kuò)展8 位的功能模塊,還是16 位的功能模塊,即使擴(kuò)展模/ 數(shù)轉(zhuǎn)換或數(shù)/ 模轉(zhuǎn)換這類的功能模塊也是很方便的。 第四點(diǎn),典型MCU的存儲(chǔ)結(jié)構(gòu)有兩種,馮。諾依曼結(jié)構(gòu)程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器統(tǒng)一編碼;哈佛結(jié)構(gòu)程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器;MSP430系列單片機(jī)屬于前者,而常用的51內(nèi)核單片機(jī)系列屬于后者。
7、160; 第五點(diǎn),就是在開發(fā)工具上面。對51內(nèi)核 單片機(jī)來說,不少適合我們使用的開發(fā)工具。但是如何實(shí)現(xiàn)在線編程還是一個(gè)很大的問題。對于MSP430 系列而言,由于引進(jìn)了Flash 型程序存儲(chǔ)器和JTAG 技術(shù),不僅使開發(fā)工具變得簡便,而且價(jià)格也相對低廉,并且還可以實(shí)現(xiàn)在線編程。 那么說了以上這些,作為新手,到底怎么學(xué)習(xí)430這種16位低功耗的單片機(jī)呢?或者說有什么有什么效果比較好的方法嗎,答案是肯定。網(wǎng)上有很多介紹MSP430單片機(jī)學(xué)習(xí)的方法,一定要結(jié)合自己的學(xué)習(xí)特點(diǎn),集百家之長,善于總
8、結(jié)別人的、自己的學(xué)習(xí)方法和效果,積極實(shí)踐。當(dāng)然學(xué)習(xí)的方法都是相通的。大概對這些方法簡單總結(jié),也就是下面幾點(diǎn):1. 作為430新手,首先看我們是否準(zhǔn)備好以下幾樣硬件:電腦(帶有并口)1臺(tái),MSP430FET仿真器1套,MSP430開發(fā)實(shí)驗(yàn)板1套,和一些MSP430教程或電子教程資料等。2. 選用MSP430仿真器。購買現(xiàn)成的MSP430JTAG仿真器如TI-MSP430JTAG3. 選用MSP430開發(fā)板或目標(biāo)板是學(xué)習(xí)一個(gè)重要的工具,建議購買一個(gè)開發(fā)板或目標(biāo)板,同時(shí)也會(huì)得到很好的技術(shù)支持。如果自己制作的話也行,也未尚不可,那就看個(gè)人水平了。4. 軟件工具,因?yàn)楝F(xiàn)在都有學(xué)習(xí)板的工具軟件,如IAR的
9、EW430學(xué)習(xí)版,430GCC軟件還是免費(fèi)的。建議還是使用IAR軟件較方便,因?yàn)槭褂玫娜巳狠^多,有問題還可請教,容易解決。5. MSP430學(xué)習(xí)資料及教程,<<MSP430系列16位超低功耗單片機(jī)原理與應(yīng)用>> 清華大學(xué)出版社和一本關(guān)于430C語言編程應(yīng)用的書本<<MSP430系列單片機(jī)實(shí)用C語言程序設(shè)計(jì)>>。6. MSP430系列中硬件源資是非常豐富的。有看門狗(WDT)、定時(shí)器A (Timer_A)、定時(shí)器B(Timer_B)、比較器、串口0(USARTO)、串口1(USART1)、硬件乘法器、液晶驅(qū)動(dòng)器、10位/12位ADC, 14位ADC
10、,數(shù)十個(gè)可實(shí)現(xiàn)方向設(shè)置及中斷功能的并行輸入輸出端口、基本定時(shí)器(Basic Timer)。7. 以下幾部分模塊硬件資源是作為初學(xué)者必須要了解學(xué)習(xí)的。WDT看門狗定時(shí)器: 新手們會(huì)看到很多編程實(shí)例中,開頭都有“WDTCTL = WDTPW + WDTHOLD;”語句。這是CUP執(zhí)行關(guān)閉定時(shí)器的意思。在剛開始,我們沒必要關(guān)心這個(gè),可以跳過這章節(jié),只要大概地知道他的作用就好了??撮T狗定時(shí)器一般是用于防止程序失效而存在的,一般是用于完整的程序中使用。主程序中可不斷地清除看門狗定時(shí)器的計(jì)數(shù)值,以防定時(shí)器的值自動(dòng)計(jì)滿后使CPU復(fù)位而重新開始工作。當(dāng)程序發(fā)生錯(cuò)誤時(shí),無法正常清除看門狗的定時(shí)值時(shí),則看門狗定時(shí)
11、器計(jì)數(shù)溢出而產(chǎn)生CPU復(fù)位。IO模塊:對于IO模塊可分為初級與提高兩階段,可以不必同一時(shí)段內(nèi)進(jìn)行理解。 a初學(xué)者必需了解幾個(gè)常用寄存器使用如P1OUT,P1IN,P1DIR,P1SEL寄存器。 b理解MSP430 IO口常用編程語法,這些都可以查看參考例程。 c結(jié)合書本介紹和個(gè)人理解,然后在開發(fā)板上進(jìn)行實(shí)驗(yàn)。例如比如LED、響聲之類的 初級實(shí)驗(yàn)。 d對于IO模塊:了解如何使用IO中斷,和IO中斷相關(guān)寄存器的使用。如果不太必要,可以跳過IO中斷的使用,而是去學(xué)習(xí)其他
12、章節(jié)的基礎(chǔ)部分;當(dāng)其他章節(jié)基礎(chǔ)學(xué)習(xí)到一定程序時(shí)回過頭再來學(xué)習(xí)這部分。另外,我們需要搞清楚IO模塊在什么時(shí)候?yàn)楦咦锠顟B(tài)?高阻狀態(tài)時(shí)的漏電流為多少?IO驅(qū)動(dòng)電流能力如何?等等一些常關(guān)注的參數(shù)時(shí),我們都需要養(yǎng)成主動(dòng)查看器件手冊的習(xí)慣。e. 中斷是430處理器的一大特色,因?yàn)閹缀趺總€(gè)外圍模塊都能產(chǎn)生,430可以在沒有任務(wù)時(shí)進(jìn)入低功耗狀態(tài),有事件時(shí)中斷喚醒cpu,處理完畢再次進(jìn)入低功耗狀態(tài)。整個(gè)中斷的響應(yīng)過程是這樣的,當(dāng)有中斷請求時(shí),如果cpu處于活動(dòng)狀態(tài),先完成當(dāng)前命令;如果處于低功耗,先退出,將下一條指令的pc值壓入堆棧;如果有多個(gè)中斷請求,先響應(yīng)優(yōu)先級高的;執(zhí)行完后,等待中斷請求標(biāo)志位復(fù)位,要注意
13、,單中斷源的中斷請求標(biāo)志位自動(dòng)復(fù)位,而多中斷的標(biāo)志位需要軟件復(fù)位;然后系統(tǒng)總中斷允許位SR.GIE復(fù)位,相應(yīng)的中斷向量值裝入pc,程序從這個(gè)地址繼續(xù)執(zhí)行。這里要注意,中斷允許位SR.GIE和中斷嵌套問題。如果當(dāng)你執(zhí)行中斷程序過程中,希望可以響應(yīng)更高級別的中斷請求時(shí),必須在進(jìn)入第一個(gè)中斷時(shí)把SR.GIE置位。其實(shí),其他的外圍模塊時(shí)鐘沿著時(shí)鐘和中斷這個(gè)核心來執(zhí)行的。具體的結(jié)構(gòu)我也不羅索了,可以參考430系列手冊。時(shí)鐘模塊:系統(tǒng)時(shí)鐘是一個(gè)程序運(yùn)行的指揮官,時(shí)序和中斷也是整個(gè)程序的核心和中軸線。430最多有三個(gè)振蕩器,DCO內(nèi)部振蕩器;LFXT1外接低頻振蕩器,常見的32768HZ,不用外接負(fù)載電容;
14、也可接高頻450KHZ8M,需接負(fù)載電容;XT2接高頻450KHZ8M,加外接電容。初學(xué)者若要使用到片中某模塊時(shí)幾乎都要使用不同的時(shí)鐘。時(shí)鐘模塊是提供整個(gè)單片機(jī)中各模塊的時(shí)鐘發(fā)生源,所以這章節(jié)是非常強(qiáng)調(diào)地要去認(rèn)真理解的。.必須理解430有幾種時(shí)鐘信號:MCLK系統(tǒng)主時(shí)鐘,可分頻1 2 4 8,供cpu使用,其他外圍模塊在有選擇情況下也可使用;SMCLK系統(tǒng)子時(shí)鐘,供外圍模塊使用,可選則不同振蕩器產(chǎn)生的時(shí)鐘信號;ACLK輔助時(shí)鐘,只能由LFXT1產(chǎn)生,供外圍模塊。.DCO,SMCLK,MCLK,ACLK各個(gè)時(shí)鐘有什么優(yōu)點(diǎn)和點(diǎn)。.4個(gè)時(shí)鐘信號中,每個(gè)時(shí)鐘的通常頻率范圍是多少。.常規(guī)的時(shí)基控制寄存器
15、設(shè)置和時(shí)鐘如何從引腳輸出等等。TimaA模塊:.初學(xué)者需要搞清TimerA的三個(gè)不同工作模式中TA、CCR1、CCR2與CCR0之間的關(guān)系。.搞清楚TA、CCR1、CCR2與CCR0之間的中斷向量關(guān)系。.綜合上面的理解,我們可以結(jié)合TimerA的例程來進(jìn)行相關(guān)驗(yàn)證,只有通過親自的操作才能有效地記住。.利用TimerA實(shí)現(xiàn)PWM信號輸出、利用捕獲/比較功能實(shí)現(xiàn)捕獲信號等等。8. 另外多大學(xué)習(xí)430學(xué)習(xí)單片機(jī)論壇上, 和網(wǎng)友交流,咨詢,多看別人出現(xiàn)的問題的解決方法。 可以說,只要經(jīng)過上述方面認(rèn)真折騰學(xué)習(xí)的話,其實(shí)M
16、SP430單片機(jī)編程應(yīng)用就有了基本入門階段,可以說已經(jīng)闖入MSP430單片機(jī)有效學(xué)習(xí)過程,接下要繼續(xù)學(xué)習(xí)其他相關(guān)的模塊應(yīng)用也不難了。那么剩下的一些模塊可以按需而用,按需而學(xué)。 但前提的就是需要熟悉幾個(gè)常用模塊基礎(chǔ)應(yīng)用,以使用量最多的14x系列為例,初學(xué)者入門必學(xué)有IO模塊、時(shí)基模塊、定時(shí)器模塊等,以后可繼續(xù)強(qiáng)化學(xué)習(xí)如ADC12模數(shù)轉(zhuǎn)換、UART串行異步通訊模塊、比較器A模塊等等。(二)2013/8/20 19:03:22 | MSP430F5529 (一)通用I/O口的設(shè)置-1初學(xué),有什么錯(cuò)誤或者不恰當(dāng)?shù)牡胤蕉喽嘀刚?,大家一起交流學(xué)習(xí)。推薦一個(gè)好去處:TI官方MSP430交
17、流社區(qū)需要注冊。在這里面提問題,都會(huì)有TI的在職工程師為你解答。第一章,先學(xué)習(xí)I/O。I/O的操作是最基本的,而且這些寄存器也都要牢牢掌握。MSP430難就難在它有大量的寄存器需要設(shè)置,雖然不是每個(gè)都必須掌握,但I(xiàn)/O控制寄存器我覺得肯定還要記住的。這個(gè)太基礎(chǔ)了啊啊-_'大家手里要常備一份原理圖(PCB圖),方便查線和配置引腳一、通用I/O的簡單操作(設(shè)置) 詳情可參照TI官方資料 SLAU208 Digital I/O Module1.1 I/O的簡介
18、0; 特點(diǎn):多種復(fù)用和設(shè)置(即可控制是否輸入、是否輸出、是否接上拉電阻、是否接下拉電阻、是否可接受中斷); 一般情況下,P1和P2都是具有中斷能力的。從P1和P2接口的各個(gè)I/O管腳引入的中斷可以獨(dú)立的被使能并且設(shè)置為上
19、升沿或者下降沿觸發(fā)。對應(yīng)的中斷向量表分別為P1IV和P2IV,它們只能進(jìn)行字操作,并且PAIV這個(gè)寄存器根本不存在。 P1、P2可合為PA,P3、P4可合為PB,PC、PD。所以P1為8位BCD 0x00,PA為16位BCD 0x0000。當(dāng)進(jìn)行字操作寫入PA口時(shí),所有的16位都被寫入這個(gè)端口;當(dāng)利用字節(jié)操作寫入PA口的低字節(jié)時(shí),高字節(jié)
20、保持不變; 由于430很多I/O和外圍電路接線,所以這里常用位操作。如事先定義(接下來也會(huì)用到,先在此聲明)BIT0=0X01、BIT1=0X02、BIT3=0X04BIT7=0X80,那么將P1.1、P1.3的輸出設(shè)為1的時(shí)候,就可以這樣操作:P1OUT|=(BIT1+BIT3)。這樣顯得很清楚。 &
21、#160; 沒有用到的I/O,要統(tǒng)一拉低為好。此外,當(dāng)讀入的數(shù)據(jù)長短小于端口最大長度時(shí),那些沒有用到的位會(huì)被視零。 1.2 I/O的簡單配置
22、; 430I/O的配置是用軟件來實(shí)現(xiàn)的,是通過相應(yīng)的配置寄存器來實(shí)現(xiàn)的。(用到某個(gè)I/O時(shí),一定要先配置好該I/O,否則易出錯(cuò)) 1.2.1 I/O方向設(shè)定寄存器PXDIR 如設(shè)定P1.1和P1.2為輸出狀態(tài)操作為: P1DI
23、R |=(BIT1+BIT2)等價(jià)于PADIR |=(BIT1+BIT2)也等價(jià)于PADIR_L|=(BIT1+BIT2。拉高設(shè)定為輸出,拉低設(shè)定為輸入(默認(rèn))。 1.2.2 I/O輸入設(shè)定寄存器PXIN 如設(shè)定P1.1和P1.2的輸入為低電平操作為:
24、0;P1IN &=(BIT1+BIT2)。 1.2.3 I/O輸出設(shè)定寄存器PXOUT當(dāng)只用為簡單的輸出時(shí):如設(shè)定P1.1和P1.2輸出高電平操作為: P1OUT |=(BIT1+BIT2)。
25、; 如果該引腳為正常I/O功能,且當(dāng)前已設(shè)定為輸入方向,且上拉/下拉電阻寄存器是有效地。那么PXOUT可以用來配置上拉和下拉電阻: 低電平為下拉電阻
26、; 高電平為上拉電阻;
27、160;1.2.4 上拉/下拉電阻使能寄存器PXREN 低電平該寄存器為無效狀態(tài);
28、60; 高電平該寄存器為有效狀態(tài);
29、160; 1.2.5 輸出驅(qū)動(dòng)能力設(shè)置寄存器PXDS 弱化驅(qū)動(dòng)可以減弱電磁干擾EMI,全力驅(qū)動(dòng)會(huì)增強(qiáng)電磁干擾。默認(rèn)為減弱驅(qū)動(dòng)。
30、 低電平表示減弱的驅(qū)動(dòng)(默認(rèn));
31、60; 高電平表示全力的驅(qū)動(dòng); 1.2.6 功能選擇寄存器PXSEL
32、; 用來聲明該端口是要應(yīng)用于外圍電路的特殊功能(不決定輸入輸出方向),默認(rèn)為低電平。 &
33、#160; 低電平表示普通的I/O(默認(rèn)); 高電平表示該引腳將有連接外圍電路的特殊用途;
34、; 如:開發(fā)板初始化函數(shù)HAL_Board.c中有這樣一句程序:
35、; P5SEL |=(BIT2+BIT3)(=00001100); 這句話的意思就是聲明P5.2和P
36、5.3將有特殊用途,實(shí)際上這兩個(gè)I/O接的是外部的高頻時(shí)鐘晶振(之后還要設(shè)定為輸入狀態(tài)才可以)。 此外需要注意的是,一旦某個(gè)I/O的PXSEL置高了,那么該引腳將不能再被用為中斷引腳。 總結(jié),簡單的程序應(yīng)用:/*實(shí)現(xiàn)LED的閃爍*/LED位于每個(gè)觸摸按鍵下
37、方,具體接口請查詢原理圖#include <msp430.h> 該頭文件內(nèi)部包含430各個(gè)寄存器的配置情況void main(void) WDTCTL=WDTPW+WDTHOLD;
38、60; /關(guān)閉看門狗 P1DIR|=(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5); /P1.0-P1.5方向?yàn)檩敵?,BITX的定義在msp430.h中 P1OUT&=(BIT0+BIT1+BIT2+
39、BIT3+BIT4+BIT5); /清零 /*P1SEL=0X00;PXDS=0X00;默認(rèn)*/ int i=0,j=0; while(1)
40、 if(i>5) i=0; else
41、 switch(i)
42、60; case 0:P1OUT=0x01;break;
43、60; case 1:P1OUT=0x02;break; case 2:P1OUT=0x04;break;
44、60; case 3:P1OUT=0x08;break; case 4:P1OUT=0x10;break;
45、60; case 5:P1OUT=0x20;break;
46、60; i+; for(j=20000;j>0;j-); &
47、#160; /延時(shí) (三)上海大學(xué)樂乎博客 > 落葉遍地 > MSP430F5529 (一)通用I/O口的設(shè)置-22013/8/21 11:16:16 | MSP430F5529 (一)通用I/O口的設(shè)置-2這一部分講外部中斷。看介紹再加弄懂程序才是王道外部中斷是MSP430優(yōu)先級最低的中斷而且是可屏蔽中斷。用起來比較簡單。 1.2.7 簡單的端口中斷(外部中斷
48、) P1、P2的所有端口都具有中斷能力,可以通過寄存器PxIFG,PxIE和PxIES來配置。其他端口則需參照具體的引腳說明書。所有的P1中斷標(biāo)志是最優(yōu)先的(相比其它引腳的外部中斷),其中P1IFG.0又最優(yōu)。
49、0; PXIV中斷向量寄存器:只有P1IV和P2IV。最高優(yōu)先級使能中斷在P1IV寄存器中產(chǎn)生一個(gè)序號,這個(gè)數(shù)字會(huì)被程序計(jì)數(shù)器識別或者加入其中,然后自動(dòng)的執(zhí)行合適的中斷服務(wù)程序。關(guān)閉P1口中斷不會(huì)影響P1IV寄存器中的值。P2口具有相同的功能。PxIV寄存器只能字訪問。
50、0; PxIFGx 中斷標(biāo)志寄存器:只有相應(yīng)的中斷使能PXIE打開且總中斷GIE打開,該寄存器才有效。 低電平表示沒有中斷請求等待響應(yīng);&
51、#160; 高電平表示有中斷請求等待響應(yīng);
52、0; 注意:使用端口的中斷功能期間,如果進(jìn)行PXIN、PXOUT等操作可能使中斷變化。注意:中斷標(biāo)志需要軟件清零。有一種情況例外:兩個(gè)中斷同時(shí)發(fā)生,先響應(yīng)優(yōu)先級高的中斷,當(dāng)該中斷服務(wù)程序結(jié)束后,該位的中斷標(biāo)志會(huì)自動(dòng)清零,然后去響應(yīng)另外一個(gè)中斷。 PxIE 中斷使能寄存器
53、 低電平表示中斷關(guān)閉; 高電平表示中斷允許;PXIES 中斷觸發(fā)方式選擇寄存器
54、 低電平表示上升沿觸發(fā); &
55、#160; 高電平表示下降沿觸發(fā);外部中斷應(yīng)用示例:/*采用中斷的方式,開關(guān)S2(接于P2.2)控制LED(接于P1)一個(gè)一個(gè)點(diǎn)亮(看PCB圖接線)*/#include <msp430.h> int s=0; /s用來表示按鍵次數(shù)int num =0;
56、/num表示LED值void main(void) WDTCTL=WDTPW+WDTHOLD; /關(guān)閉看門狗 P1DIR=0xff; /P1全部接輸出 P1OUT=0x00; /接LED初始化故全拉低,這樣開始燈是滅的 P2DIR=0x00; &
57、#160; /P2全部設(shè)為輸入。因?yàn)橐邮芡獠恐袛?#160; P2IFG=0x00; /清除P2口的中斷標(biāo)志 P2IE=BIT2; /P2.2開啟中斷 P2IES=0xff; /P2為下降沿觸發(fā) P2IN=
58、BIT2; /P2.2輸入拉高,因此開關(guān)閉合時(shí)會(huì)拉低產(chǎn)生下降沿(即中斷) P2OUT=0xff; P2REN=0xff; /作為輸入的時(shí)候一定要配置上拉電阻(很重要,容易忘記,我就在這錯(cuò)了-_) _enable_interrupt(); /開總中斷 while(1) num=s%5;
59、0; switch(num) case 0:P1OUT=BIT1;break; case 1:P1OUT=BIT2;break; case 2:P1OUT=BIT3;break;
60、160; case 3:P1OUT=BIT4;break; case 4:P1OUT=BIT5;break;#pragma vector=PORT2_VECTOR /固定格式,聲明中斷向量地址_interrupt void Port2_ISR(void) /中斷子程序 &
61、#160; unsigned int temp; /局部變量 int i; for(i=0;i<12000;i+); / 延時(shí)消抖 if(P2IN&0xff)!=0xff) /如果有鍵按下
62、 temp=P2IFG; /讀取中斷標(biāo)志 P2IFG=0x00; /標(biāo)志位清零 if(temp=0x04)
63、 /如果P2.2產(chǎn)生中斷 s+; /這一部分其實(shí)有幾句話很多余,主要是為了體現(xiàn)每個(gè)端口中斷的知識備注中斷子程序調(diào)用格式:#pragma vector=中斷向量地址_interrupt void 中斷服務(wù)程序名(void) /中斷處理程序 1.2.8 未使用的I/O &
64、#160; 未使用的I/O管腳最好被設(shè)置為普通I/O功能、輸出方向并且在PCB板上不連接這些管腳,以防止浮動(dòng)的輸入和降低功耗。因?yàn)檫@些管腳沒有被連接,所以它們的輸出值沒有必要在意?;蛘呖梢酝ㄟ^設(shè)置未使用管腳的PxREN寄存器來使能置高/置低寄存器以避免浮動(dòng)輸入的干擾。(四)上海大學(xué)樂乎博客 > 落葉遍地 > MSP430F5529 (二)看門狗的設(shè)置2013/8/22 13:54:03 |
65、 MSP430F5529 (二)看門狗的設(shè)置 看門狗定時(shí)器(Watchdog Timer(WDT_A))實(shí)際上是一個(gè)特殊的定時(shí)器,即可以用來作為看門狗使用,也可以用作定時(shí)器。所謂的看門狗功能,是指可以監(jiān)控程序是否由于某些干擾或者錯(cuò)誤而跑飛。其原理就是發(fā)生故障的時(shí)間滿足規(guī)定的定時(shí)時(shí)間后,產(chǎn)生一個(gè)非屏蔽中斷,使系統(tǒng)復(fù)位。這樣當(dāng)在調(diào)試程序或預(yù)計(jì)程序在某個(gè)地方可能瞬時(shí)發(fā)生錯(cuò)誤時(shí)(如外部電路干擾),選用設(shè)置看門狗定時(shí)中斷可以避免程序跑飛。當(dāng)然,它也可以用作一般的定時(shí)功能。不過實(shí)際上,由于看門狗定時(shí)器(作看門狗使用時(shí))需要很嚴(yán)密的設(shè)置(否則程序容易經(jīng)常重啟),所以很多人都不
66、會(huì)使用這項(xiàng)功能。所以,程序一開始就加上一句話:WDTCTL=WDTPW+WDTHOLD來關(guān)閉看門狗。 2.1 WDT_A的簡介 特點(diǎn): 有8種可選定時(shí)時(shí)
67、間;看門狗模式;定時(shí)器模式;看門狗控制寄存器存在密碼保護(hù);時(shí)鐘源可選,且具有時(shí)鐘源意外保護(hù);可以被終止來節(jié)省能源;無論是用作看門狗還是定時(shí)器,其間隔時(shí)間都無法隨意設(shè)定,只能從8種設(shè)定中選擇,當(dāng)然可以通過更改時(shí)鐘頻率來間接更改時(shí)間; 注意默認(rèn)設(shè)置:程序啟動(dòng),看門狗即啟動(dòng);監(jiān)控周期為32ms/32.768KHZ(也就是說當(dāng)看門狗的時(shí)鐘頻率為32.768KHZ時(shí),每過32ms,如果不軟件清空,程序就會(huì)重啟);所用的時(shí)鐘源為SMCLK(實(shí)際頻率不是32.768KHZ,后面會(huì)提到)。2.2 WDT_A的寄存器及操作
68、; 注意:所有的寄存器都存字操作和字節(jié)操作模式。例如對WDTCTL寄存器直接賦值是字操作,你也可以通過WDTCTL_L(低字節(jié)寄存器)、WDTCTL_H來進(jìn)行字節(jié)操作賦值。
69、; 該類寄存器只能賦值不要進(jìn)行“|=、&=”等邏輯操作。 2.2.1看門狗控制寄存器WDTCTL(Watchdog Timer Control)
70、0; 該寄存器是一個(gè)16位帶有密碼保護(hù)的讀寫寄存器。所謂的密碼保護(hù),是為了防止該寄存器被不小心篡改。那么是如何實(shí)現(xiàn)密碼保護(hù)呢?事實(shí)上,該寄存器的高字節(jié)用來存放口令,低字節(jié)才是控制數(shù)據(jù)。寫口令為05Ah,讀口令為069h,任何和口令不一樣的高字節(jié)操作都會(huì)導(dǎo)致系統(tǒng)復(fù)位。該寄存器的位功能定義如下:(支持位操作)
71、0; WDTPW:Bits15-8,WDT Password,寫為05Ah,讀為069h。 WDTHOLD:Bit7,WDT HOLD,
72、 0:打開看門狗計(jì)時(shí)器; 1
73、:關(guān)閉 WDTSSEL:Bits6-5,WDT Clock Source Select時(shí)鐘源選擇WDTTMSEL:Bit4,工作模式選擇0:看門狗模式;
74、60; 1:定時(shí)器模式;WDTCNTCL:Bit3,計(jì)時(shí)器清零0:無效; &
75、#160; 1:清空計(jì)數(shù)器,即WDTCNT=0x0000hWDTIS: Bits2-0,WDT Interval Select,間隔時(shí)間選擇。用來選擇計(jì)數(shù)的周期,共有8種時(shí)間可以選擇。 備注:括號前數(shù)字為計(jì)數(shù)器的值 2.2.2 看門狗計(jì)數(shù)值寄存器WDTCNT(Watchdog Timer Counter)
76、160; 這是一個(gè)32Bit的加計(jì)數(shù)器,但是不能通過軟件來直接對其進(jìn)行賦值等操作,只能通過WDTCTL中的WDTIS來選擇時(shí)間?;蛘吣憧梢酝ㄟ^WDTSSEL選擇不同的時(shí)鐘源,來間接改變時(shí)間。 2.2.3 看門狗中斷 位控制 WDT利用SFRS總寄存器中的兩位來控制中斷。
77、160; WDT中斷標(biāo)志位:WDTIFG,位于SFRIFG1.0 WDT 中斷使能位:WDTIE,位于SFRIE1.0
78、0; 看門狗模式:如果不及時(shí)對WDTCNT清零或者對WDT初始化,WDTIFG就會(huì)置位,然后程序就會(huì)重啟。
79、160; 計(jì)時(shí)器模式:必須開總中斷GIE和看門狗中斷WDTIE。此外,當(dāng)執(zhí)行完中斷服務(wù)程序后,標(biāo)志位WDTIFG會(huì)自動(dòng)清零。 2.3常用操作 /*關(guān)閉看門狗*/ &
80、#160; WDTCTL=WDTPW+WDTHOLD; /*喂狗,即對有效狀態(tài)的看門狗進(jìn)行清零操作*/
81、; /* 時(shí)間計(jì)滿還不喂狗就會(huì)導(dǎo)致程序重啟*/ /*WDTIS2即WDTIS=100,此時(shí)時(shí)間間隔設(shè)為1S,假定頻率為32.768KHZ*/
82、; WDTCTL = WDTPW + WDTCNTCL+WDTSSEL0+WDTIS2; /*將看門狗設(shè)置為計(jì)數(shù)器模式,計(jì)數(shù)8192約250ms,假定頻率為32.768KHZ*/
83、60; /* WDTIS2+WDTIS0即101*/ WDTCTL=WDTPW+WDTCNTCL+WDTTMSEL+WDTIS2+WDTIS0 總結(jié)例程:/*首先將WDT設(shè)為定時(shí)器功能。
84、而中斷服務(wù)子程序則是把WDT改為看門狗功能。這樣就通過中斷控制的周期性的重啟程序,實(shí)現(xiàn)了LED閃爍*/*注意,這里默認(rèn)的時(shí)鐘源不是32KHZ,而是內(nèi)部的DCO-SMCLK(之后會(huì)講到)1.045MHZ。所以前面WDTIS定義的時(shí)間大約都要縮小1045/32=32倍*/ #include <msp430.h>void main(void) /*清零-設(shè)定為計(jì)數(shù)器-時(shí)間設(shè)定為010模式,即256S/32=8S*/ WDTCTL=WDTPW+WDTCNTCL+WDTTMSEL+WDTIS1;
85、; _enable_interrupt(); /開總中斷 SFRIE1|=WDTIE; /開看門狗定時(shí)器中斷 P1DIR=0xff; int i,j; P1OUT=0xff; for(i=0;i<30000;i+) &
86、#160; for(j=0;j<50;j+); /延時(shí)約8S P1OUT=0x00; while(1); /*中斷服務(wù)程序*/#pragma vector=WDT_VECTOR_interrupt void WatchTimer(void) WDTCTL=WDTPW+WDTCNTCL+WDTIS1;
87、 /看門狗模式,時(shí)間設(shè)定約為8S (五)上海大學(xué)樂乎博客 > 落葉遍地 > MSP430F5529 番外(一)常用內(nèi)置函數(shù)和一些說明2013/8/23 11:57:36 | MSP430F5529 番外(一)常用內(nèi)置函數(shù)和一些說明 今天天太熱,就更新一個(gè)番外吧。其實(shí)也是很有用的,我覺得。 &
88、#160; 下一次,會(huì)講UCS統(tǒng)一時(shí)鐘系統(tǒng),是一個(gè)很復(fù)雜的部分。 (1) MSP430F5529支持最高工作頻率為25MHZ,也就是說你通過 鎖相環(huán)倍頻來提高系統(tǒng)運(yùn)行速度是
89、有一個(gè)限制的, 最高只能到25MHZ(再高沒意思了)。 (2)幾個(gè)重要的內(nèi)聯(lián)函數(shù)
90、60; (內(nèi)聯(lián)函數(shù)定義在intrinsics.h中,但是這幾個(gè)函數(shù)使用的時(shí)候 不需要事先聲明該文件頭)
91、0; _bic_SR_register();
92、60; 將CPU中SR寄存器中的某些位清零。即將括號內(nèi)的位清零。 例:_bi
93、c_SR_register(GIE);/將GIE位清零,即關(guān)閉總中斷 _bis_SR_register(); &
94、#160; 將CPU中SR寄存器中的某些位置1。即將括號內(nèi)的位置1。
95、60;_interrupt放在函數(shù)前面,標(biāo)志中斷函數(shù)。下面這段程序是看門狗WDT的中斷服務(wù)函數(shù)。WDT_VECTOR為看門狗的中斷向量。 舉例: #pragma vector=WDT_VECTOR_interrupt void WatchDog(void) _monitor放在函數(shù)前面,功能是聲明當(dāng)這一函數(shù)執(zhí)行的時(shí)候自動(dòng)關(guān)閉中斷。應(yīng)該盡量縮短這樣的函數(shù),否則,中斷事件無法得到及時(shí)的響應(yīng)。
96、; _bic_SR_register_on_exit(); 功能:用于一個(gè)中斷函數(shù)或者不可中斷函數(shù)(標(biāo)志為_monitor)返回時(shí),將CPU內(nèi)SR寄存器中的某些位清0. _bis_SR_register_on_exit();功能:用于一個(gè)中斷函數(shù)或者不可中斷函數(shù)(標(biāo)志為_monitor)返回時(shí),將CPU內(nèi)SR寄存器中的某些位置1. _no_init放在全局變量前面,功能是使程序啟動(dòng)時(shí)不為變量賦初值
97、160;_disable_interrupt 關(guān)閉總中斷 另外一個(gè)相同作用的表達(dá)為:
98、160; _DINT() _enable_interrupt 開啟總中斷
99、60;另外一個(gè)相同作用的表達(dá)為: _EINT()_even_in_range( , );常被用在多源中斷的查詢中,如switch( _even_in_range(TAIV,10)意思是:只有在TAIV的值是在0-10內(nèi)的偶數(shù)時(shí)才會(huì)執(zhí)行switch函數(shù)內(nèi)的語句。其作用是提高switch語句的效率 A. _NOP()空操作,等價(jià)于_no_operation指令 B. _get_SP_re
100、gister(void)功能:返回堆棧指針寄存器SP的值。 C. _get_SR_register_on_exit(void)功能:用于一個(gè)中斷函數(shù)或者不可中斷函數(shù)(標(biāo)志為_monitor)返回時(shí),返回狀態(tài)寄存器SR的值。 D. _bcd_add_short(unsigned short,unsigned short);功能:兩個(gè)16為BCD格式的數(shù)字相加,返回和。
101、 E. _bcd_add_long(unsigned long,unsigned long); 功能:兩個(gè)32位BCD格式的數(shù)字相加,返回和。 F. _delay_cycles(x); 系統(tǒng)自帶的精確延時(shí)。x必須是常
102、量或則是常量表達(dá)式,如果是變量則編譯報(bào)錯(cuò)!延時(shí)的時(shí)間為x乘以MCLK的時(shí)鐘周期 (3)關(guān)于MSP430大量寄存器如何處理的問題: MSP430寄存器太多了,把每一個(gè)都記住實(shí)在太難。所以,我的建議是,學(xué)習(xí)的時(shí)候,把重要的常用的寄存器記住。
103、0; 至于其它眾多寄存器,大家只需要有一個(gè)印象,知道這些寄存器可以控制那些設(shè)置。到具體用的時(shí)候,再查找技術(shù)手冊; (4)頭文件msp430f5529.h里面不僅定義了對各個(gè)寄存器的聲明,還定義了很多很方便的東東。比如你要進(jìn)入低功耗模式1:LPM1;比如你要把定時(shí)器A0的時(shí)鐘選為SMCLK: 最原始的做法是TA0CTL=0x02
104、00,但現(xiàn)在有更清晰的做法TA0CTL=TASSEL_2;/時(shí)鐘源選擇模式2 所以說要不斷發(fā)掘不斷積累! (5)中斷寄存器的名字 大家都知道中斷函數(shù)是怎么寫的,模式為:#pragma vector=中斷向量地址(名)_interrupt void 自定義中斷函數(shù)名(void)
105、60; 但是想要寫出來,你首先得知道中斷向量叫什么名字吧到目前,我們已經(jīng)遇到了看門狗中斷WDT_VECTOR、引腳P2的外部中斷PORT2_VECTOR、定時(shí)器A0(CCR1-CCR4和TAIFG)中斷TIMER0_A1_VECTOR還有大量的中斷向量,我們目前還不知道名字該怎么辦。打開msp430f5529.h,拉到該文件底部,就展示了定義的各種中斷向量名,還有解釋。 (
106、6)MSP430的最大特色就是低功耗,這個(gè)是體現(xiàn)在各個(gè)方面的。在整體層次上,MSP430可以設(shè)置整個(gè)系統(tǒng)的工作模式以達(dá)到適應(yīng)工作要求且降低功耗的目的。為了降低功耗,處理器有幾個(gè)考慮:一個(gè)是降低工作電壓(F5529為3.3V很低了吧,而且內(nèi)部核心電壓VCORE更低); 第二個(gè)就是把暫時(shí)不用的模塊功能關(guān)閉掉(F5529各個(gè)模塊都可以獨(dú)立運(yùn)行,如定時(shí)器、A/D轉(zhuǎn)換、看門狗等都可以在CPU休眠的狀態(tài)下獨(dú)立工作。若需要主CPU工作,任何一個(gè)模塊都可以通過中斷喚醒CPU,從而使系統(tǒng)以最低功耗運(yùn)行。);第三個(gè)方法就是降低工作時(shí)鐘頻率。 (六)上海大學(xué)樂乎博客 >
107、;落葉遍地 > MSP430F5529 (三)統(tǒng)一時(shí)鐘系統(tǒng)UCS-12013/8/26 12:51:46 | MSP430F5529 (三)統(tǒng)一時(shí)鐘系統(tǒng)UCS-1 1、以后要配置時(shí)鐘的地方到處都是。2、打字好累,上傳更累;3、之后我會(huì)發(fā)布PDF版,有心的同學(xué)可以下載學(xué)習(xí)。 之前有一點(diǎn)漏說明了,先補(bǔ)充上*還有一個(gè)模塊時(shí)鐘源:MODOSC,產(chǎn)生MODCLK時(shí)鐘源信號,一般只為閃存控制模塊和ADC12模塊提供服務(wù)。該模塊不被使用時(shí)自動(dòng)關(guān)閉,任何模塊對該時(shí)鐘源提出使用要求時(shí),MODOSC無需被使能即可響應(yīng)該請求。430F5529中MODCLK為5MHZ。*
108、 MSP430F5529有多個(gè)時(shí)鐘源,而且很多模塊其時(shí)鐘源都是可以自由選擇的。此外,由于一般情況下,系統(tǒng)功耗是和工作頻率成正比的,因此有些時(shí)候通過選擇較低頻率的時(shí)鐘源,在滿足正常工作條件下,是可以有效降低功耗的。雖然函數(shù)庫HAL_UCS.c/h,有完整的各個(gè)控制函數(shù),但我覺得對于這一章還是對寄存器直接操作比較簡單,因?yàn)楹瘮?shù)太短、太多了。 3.1統(tǒng)一時(shí)鐘系統(tǒng)(UCS)的簡介 Unified Clock
109、 System,UCS。合理的配置時(shí)鐘,可以達(dá)到平衡系統(tǒng)且降低功耗的目的。 MSPF5529時(shí)鐘系統(tǒng)包含5個(gè)時(shí)鐘源: LFXT1 外部低頻振蕩源,32.768KHZ,可以用作FLL的參照源;XT2 外部高頻振蕩源,4MHZ;VLO (Internal very low)內(nèi)部低耗低頻振蕩源,典型為10KHZ,精度一般;REFO 內(nèi)部低頻參照源,32.768KHZ,常被用作鎖相環(huán)FLL的基準(zhǔn)頻率,精度很高,不使用時(shí)不消耗電源,其設(shè)置往往要參考LPM模式的的設(shè)置;DCO (Internal digitally-controlled)內(nèi)部數(shù)字控制振蕩源
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物聯(lián)網(wǎng)設(shè)備安全認(rèn)證標(biāo)準(zhǔn)研究-洞察分析
- 移動(dòng)端頁面加載速度提升-洞察分析
- 新型搪瓷材料應(yīng)用研究-洞察分析
- 《牢筑保密長城》課件
- 《C概率及其運(yùn)算》課件
- 《爬升模板施工》課件
- 《產(chǎn)品設(shè)計(jì)手板工藝》課件
- 從科研到應(yīng)用農(nóng)業(yè)科技園區(qū)的技術(shù)轉(zhuǎn)移
- 辦公技術(shù)的演進(jìn)及企業(yè)如何借助對沖基金保持競爭力
- 親子閱讀一種有效的互動(dòng)方式
- 期末檢測試卷(含答案)2024-2025學(xué)年數(shù)學(xué)五年級上冊人教版
- 2023年上海商學(xué)院招聘筆試真題
- 標(biāo)準(zhǔn)2024項(xiàng)目投資協(xié)議書
- 中建幕墻高處防墜落專項(xiàng)方案方案
- 鎂合金回收與再利用
- 2024年貴州省農(nóng)業(yè)農(nóng)村廳所屬事業(yè)單位招聘人員管理單位遴選500模擬題附帶答案詳解
- 頭皮腫物患者的護(hù)理
- 學(xué)校食品安全與膳食經(jīng)費(fèi)管理制度(3篇)
- 【培訓(xùn)教材】中華人民共和國《特種設(shè)備安全法》宣貫課件
- 期末試題-2024-2025學(xué)年人教PEP版英語六年級上冊 (含答案)
- 2020年甘肅公務(wù)員考試申論試題(省級卷)
評論
0/150
提交評論