mspf簡介學習課程_第1頁
mspf簡介學習課程_第2頁
mspf簡介學習課程_第3頁
mspf簡介學習課程_第4頁
mspf簡介學習課程_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、msp430f449 1、IO口 2、時鐘 3、中斷 4、定時 5、AD 6、UART 7、PWM波 8、頭文件第1頁/共48頁第一頁,編輯于星期六:九點 十九分。1、IO口一、P口端口寄存器: 1、PxDIR 輸入/輸出方向寄存器 (0:輸入模式 1:輸出模式) 2、PxIN 輸入寄存器 輸入寄存器是只讀寄存器,用戶不能對其寫入,只能通過讀取該寄存器的內(nèi)容知道I/O口的輸入信號。 3、PxOUT 輸出寄存器 寄存器內(nèi)的內(nèi)容不會受引腳方向改變的影響。 4、PxIFG 中斷標志寄存器 (0:沒有中斷請求 1:有中斷請求) 該寄存器有8個標志位,對應(yīng)相應(yīng)的引腳是否有待處理的中斷請求; 這8個中斷標

2、志共用一個中斷向量,中斷標志不會自動復(fù)位,必須軟件復(fù)位; 外部中斷事件的時間必須=1.5倍的MCLK的時間,以保證中斷請求被接受; 5、PxIES 中斷觸發(fā)沿選擇寄存器 (0:上升沿中斷 1:下降沿中斷) 6、PxSEL 功能選擇寄存器 (0:選擇引腳為I/O端口 1:選擇引腳為外圍模塊功能) 7、PxREN 上拉/下拉電阻使能寄存器 (0:禁止 1:使能)第2頁/共48頁第二頁,編輯于星期六:九點 十九分。二、常用特殊P口: 1、P1和P2口可作為外部中斷口。 2、P6可作為A/D輸入口。 3、P1.2和P2.0可作為PWM波輸出口。 4、P1.1:MCLK P1.5:ACLK 5、串口通信

3、時P2.4 P4.0為發(fā)送TXD P2.5 P4.1為接收RXD 第3頁/共48頁第三頁,編輯于星期六:九點 十九分。2、時鐘一、三個時鐘源: 1、LFXT1CLK:低頻時鐘(32768HZ) 2、XT2CLK:高頻時鐘(8MHZ) 3、DCOCLK:片內(nèi)數(shù)控振蕩器最高46MHZ 但不穩(wěn)定(不能作為定時用)第4頁/共48頁第四頁,編輯于星期六:九點 十九分。三、基本操作:1、所有P口都可作為通用IO口使用2、所有P口都可進行字節(jié)操作和位操作 按字節(jié)操作: 例 P1DIR=0 xff; /將P1口作為輸出口 PIOUT=0 x20; / P1口輸出0 x20 P1DIR=0 x00; /將P1口

4、作為輸入口 data=P1IN /讀取P1口外部輸入值 按位操作: 例 P1DIR=BIT0; /將P1.0作為輸出口 P1OUT|=BIT0; /P1.0輸出1 P1OUT&=BIT0; /P1.0輸出0 P1DIR&=BIT0; /將P1.0口作為輸入 data=P1IN&BIT0; /讀取P1.0口外部輸入值第5頁/共48頁第五頁,編輯于星期六:九點 十九分。第6頁/共48頁第六頁,編輯于星期六:九點 十九分。三、時鐘模塊可提供的四種時鐘信號: 1、ACLK:輔助時鐘,來自LFXT1CLK低頻時鐘,可有軟件選作各外圍模塊的時鐘信號,一般用于低速外設(shè)。2、ACLK/

5、n:ACLK經(jīng)過1、2、4、8分頻后由P1.5輸出,僅供外部電路使用。3、MCLK:系統(tǒng)主時鐘,可有軟件選擇來自LFXT1CLK、XT2CLK或DCOCLK的時鐘,然后經(jīng)1、2、4、8分頻得到??捎蒔1.1輸出(主要用于cpu)4、SMCLK:子系統(tǒng)時鐘,可有軟件選擇來自XT2CLK或DCOCLK的時鐘。(主要用于高速外設(shè))第7頁/共48頁第七頁,編輯于星期六:九點 十九分。四、MCLK應(yīng)用舉例: 1、在默認情況下,MCLK來自于DCOCLK其頻率為1.048576MHZ 其計算方法:MCLK=(31+1)*32768 2、如何選擇ACLK作為MCLK: void clk_initial()

6、do IFG1&=OFIFG; /清除振蕩器的失效標志 _delay_cycles(200); while(IFG1&OFIFG)!=0); /如果振蕩器的失效標志存在 FLL_CTL1=SELM1+SELM0; /選擇ACLK作為MCLK 第8頁/共48頁第八頁,編輯于星期六:九點 十九分。3、如何選擇 XT2CLK作為MCLK: void clk_initial() do IFG1&=OFIFG; /清除振蕩器的失效標志 _delay_cycles(200); while(IFG1&OFIFG)!=0); /如果振蕩器的失效標志存在 FLL_CTL1=SEL

7、M1; /選擇XT2CLK作為MCLK 4、如何選擇 DCOCLK作為MCLK:計算(121+1)*2*32768=7.995MHZ void CLK_initial() SCFI0|=FN_4; /選擇DCO頻率調(diào)整范圍為2.826.6MHZ SCFQCTL=249; /倍頻倍數(shù),最高位為DCO+調(diào)制器的控制位 FLL_CTL0=DCOPLUS+OSCCAP_1; /選擇DCO作為MCLK前分頻 第9頁/共48頁第九頁,編輯于星期六:九點 十九分。3、中斷一、中斷源:1、外部中斷:P1、P22、定時器中斷。3、看門狗定時器中斷。4、串口中斷。5、A/D轉(zhuǎn)換中斷。6、比較器中斷。二、中斷的 一

8、般設(shè)置: 1、打開、關(guān)閉局部中斷:打開局部中斷一般是給想關(guān)的特殊功能寄存器相關(guān)位置1以P1口外部中斷為例: 打開局部中斷: P1IE|=BIT0;/打開P1.0外部中斷第10頁/共48頁第十頁,編輯于星期六:九點 十九分。4、中斷優(yōu)先級:優(yōu)先級順序從高到低為:PORT2_VECTOR (1 * 2u) /* 0 xFFE2 Port 2 */PORT1_VECTOR (4 * 2u) /* 0 xFFE8 Port 1 */TIMERA1_VECTOR (5 * 2u) /* 0 xFFEA Timer A CC1-2, TA */TIMERA0_VECTOR (6 * 2u) /* 0 xF

9、FEC Timer A CC0 */ADC_VECTOR (7 * 2u) /* 0 xFFEE ADC */USART0TX_VECTOR (8 * 2u) /* 0 xFFF0 USART 0 Transmit */USART0RX_VECTOR (9 * 2u) /* 0 xFFF2 USART 0 Receive */WDT_VECTOR (10 * 2u) /* 0 xFFF4 Watchdog Timer */COMPARATORA_VECTOR (11 * 2u) /* 0 xFFF6 Comparator A */TIMERB1_VECTOR (12 * 2u) /* 0 xF

10、FF8 Timer B CC1-2, TB */TIMERB0_VECTOR (13 * 2u) /* 0 xFFFA Timer B CC0 */NMI_VECTOR (14 * 2u) /* 0 xFFFC Non-maskae */RESET_VECTOR (15 * 2u) /* 0 xFFFE Reset Highest Priority */第11頁/共48頁第十一頁,編輯于星期六:九點 十九分。關(guān)閉局部中斷一般是給想關(guān)的特殊功能寄存器相關(guān)位置0同樣以P1口外部中斷為例: 關(guān)閉局部中斷: P1IE&=BIT0;/關(guān)閉P1.0外部中斷2、打開、關(guān)閉全局中斷: _EINT();

11、/打開總中斷,相當于51的EA=1; _DINT();/關(guān)閉總中斷,相當于51的EA=0;3、各中斷向量Interrupt Vectors:#define BASICTIMER_VECTOR (0 * 2u) /* 0 xFFE0 Basic Timer */#define PORT2_VECTOR (1 * 2u) /* 0 xFFE2 Port 2 */#define USART1TX_VECTOR (2 * 2u) /* 0 xFFE4 USART 1 Transmit */#define USART1RX_VECTOR (3 * 2u) /* 0 xFFE6 USART 1 Recei

12、ve */#define PORT1_VECTOR (4 * 2u) /* 0 xFFE8 Port 1 */#define TIMERA1_VECTOR (5 * 2u) /* 0 xFFEA Timer A CC1-2, TA */#define TIMERA0_VECTOR (6 * 2u) /* 0 xFFEC Timer A CC0 */#define ADC12_VECTOR (7 * 2u) /* 0 xFFEE ADC */#define USART0TX_VECTOR (8 * 2u) /* 0 xFFF0 USART 0 Transmit */#define USART0R

13、X_VECTOR (9 * 2u) /* 0 xFFF2 USART 0 Receive */#define WDT_VECTOR (10 * 2u) /* 0 xFFF4 Watchdog Timer */#define COMPARATORA_VECTOR (11 * 2u) /* 0 xFFF6 Comparator A */#define TIMERB1_VECTOR (12 * 2u) /* 0 xFFF8 Timer B CC1-6, TB */#define TIMERB0_VECTOR (13 * 2u) /* 0 xFFFA Timer B CC0 */#define NMI

14、_VECTOR (14 * 2u) /* 0 xFFFC Non-maskable */#define RESET_VECTOR (15 * 2u) /* 0 xFFFE Reset Highest Priority */第12頁/共48頁第十二頁,編輯于星期六:九點 十九分。5、中斷的嵌套:當同時有多個中斷來的時候才有優(yōu)先級的考慮(優(yōu)先級順序可查看向量表)實現(xiàn)中斷嵌套需要注意以下幾點:1)430默認的是關(guān)閉中斷嵌套的,一定要中斷嵌套的話,就必須在中斷服務(wù)程序中打開總中斷msp430的指令中,_DINT()和_EINT()分別指關(guān)和開總中斷。2)當進入中斷服務(wù)程序時,只要不在中斷服務(wù)程序中再次

15、開中斷,則總中斷是關(guān)閉的,此時來中斷不管是比當前中斷的優(yōu)先級高還是低都不執(zhí)行;3)若在中斷服務(wù)程序A中開了總中斷,則可以響應(yīng)后來的中斷B(不管B的優(yōu)先級比A高還是低),B執(zhí)行完再繼續(xù)執(zhí)行A。注意:進入中斷服務(wù)程序B后總中斷同樣也會關(guān)閉,如 果B中斷程序執(zhí)行時需響應(yīng)中斷C,則此時也要開總中斷,若不需響應(yīng)中斷,則不用開中斷,B執(zhí)行完后跳出中斷程序進入A程序時,總中斷會自動打開;4)若在中斷服務(wù)程序中開了總中斷,后來的中斷同時有多個,則會按優(yōu)先級來執(zhí)行,即中斷優(yōu)先級只有在多個中斷同時到來時才起做用!中斷服務(wù)不執(zhí)行搶先原則。5)對于單源中斷,只要響應(yīng)中斷,系統(tǒng)硬件自動清中斷標志位,對于TA/TB定時器

16、的比較/捕獲中斷,只要訪問TAIV/TBIV,標志位倍被自動清除; 對于多源中斷要手動清標志位,比如P1/P2口中斷,要手工清除相應(yīng)的標志,如果在這種中斷用EINT();開中斷,而在打開中斷前沒有清標志,就會 有相同的中斷不斷嵌入,而導(dǎo)致堆棧溢出引起復(fù)位,所以在這類中斷中必須先清標志再打開中斷開關(guān).第13頁/共48頁第十三頁,編輯于星期六:九點 十九分。6、中斷應(yīng)用程序舉例(外部中斷): void interrupt_initial() P1DIR&=BIT7; /P1.7為輸入 P1IE|=0 x80; /P1.7中斷允許 P1IES|=0 x00; /P1.7上升沿觸發(fā) P1IFG

17、=0; /P1.7中斷標志清除,對于多源中斷必須先清中斷標志再打開中斷 _EINT(); /總中斷允許#pragma vector=PORT1_VECTOR_interrupt void Port_1(void) P1IFG&=BIT7; /P1.7中斷標志清除/*在此寫中斷服務(wù)子程序*/ 第14頁/共48頁第十四頁,編輯于星期六:九點 十九分。4、定時 一、常見的定時方式: 1、軟件定時:通過延時程序?qū)崿F(xiàn)。缺點:在延時期間,CPU一直被占用,浪費了CPU的利用率,而且延時時間不好計算。 2、硬件延時:通過專門的定時器件實現(xiàn)。優(yōu)點:在簡單的軟件控制下,產(chǎn)生準確的延時。二、硬件定時器種類

18、: 1、看門狗定時器。 2、定時器A。 3、定時器B。 4、實時時鐘RTC。第15頁/共48頁第十五頁,編輯于星期六:九點 十九分。三、Timer_A的基本特點: 四、定時器的工作模式:1、停止模式:用于定時器的暫停,并不發(fā)生復(fù)位,所有寄存器現(xiàn)行類容在停止模式結(jié)束后都可用。當定時器暫停后重新計數(shù)時,計數(shù)器將從暫停前的計數(shù)方向計數(shù)。2、增計數(shù)模式:捕獲/比較寄存器CCR0用作Timer_A增計數(shù)模式的周期寄存器,因為CCR0為16位寄存器,所以該模式適用于定時周期小于65536的連續(xù)計數(shù)情況。計數(shù)器TAR可以增計數(shù)到CCR0的值,當計數(shù)值與CCR0的值相等時,定時器復(fù)位,并從0開始重新計數(shù)。第1

19、6頁/共48頁第十六頁,編輯于星期六:九點 十九分。 增計數(shù)模式:void zengjishu() /aclk 輔助時鐘 TACTL=TASSEL1+TACLR; /選擇計數(shù)時鐘為ACLK,將計數(shù)器TAR清零 CCTL0=CCIE; /使能中斷 CCR0=200; /計數(shù)終值,方波頻率為:32768/200/2 TACTL|=MC_1; /選擇Timer_A為增計數(shù)模式 P1DIR|=BIT0; /P1.0作為輸出 _EINT(); /使能總中斷 #pragma vertor =TIMERA0_VECTOR_interrupt void Timer_A(void) P1OUT=0X01; /P

20、1.0取反 例程:第17頁/共48頁第十七頁,編輯于星期六:九點 十九分。3、連續(xù)計數(shù)模式: 特點:定時器從0開始記到0XFFFF后又開始從0開始計數(shù),當記到CCR0時產(chǎn)生中斷(可產(chǎn)生多個定時信號)第18頁/共48頁第十八頁,編輯于星期六:九點 十九分。例程: void lianxujishu() TACTL=TASSEL_1+TACLR; /選擇計數(shù)時鐘為ACLK,將計數(shù)器TAR清零 CCTL0=CCIE; /使能中斷 CCR0=1000; /計數(shù)終值,方波頻率為:32768/1000/2 TACTL|=MC_2; /選擇Timer_A為連續(xù)計數(shù)模式 P1DIR|=BIT0; /P1.0作為

21、輸出 _EINT(); /使能總中斷 #pragma vertor =TIMERA0_VECTOR_interrupt void Timer_A(void) P1OUT=0X01; /P1.0取反 CCR0+=1000; 第19頁/共48頁第十九頁,編輯于星期六:九點 十九分。5、捕獲/比較模塊:一、工作模式: 1、捕獲模式:當捕獲/比較控制寄存器CCTLx中的CAP=1時,該模塊工作于捕 獲模式。這時如果在選定的引腳上發(fā)生設(shè)定的脈沖沿,則TAR中的值將自動寫入到捕獲/比較寄存器CCRx中。 用途:1、測量軟件程序執(zhí)行所用時間。 2、測量硬件之間的時間。 3、測量頻率。 2、比較模式:當捕獲/

22、比較控制寄存器CCTLx中的CAP=0時,該模塊工作于比較模式。Timer_A 有三個捕獲/比較器,在比較模式下有8個輸出模式第20頁/共48頁第二十頁,編輯于星期六:九點 十九分。4、增/減計數(shù)模式:需要對稱波形的情況可以用增/減計數(shù)模式,該模式下,定時器先計數(shù)到CCR0的值,然后反向減計數(shù)到0。 注:定時器TAR的值從CCR01增計數(shù)到CCR0時,中斷標志CCIFG0置位,從1減計數(shù)到0時,中斷標志TAIFG置位第21頁/共48頁第二十一頁,編輯于星期六:九點 十九分。5、A/D一、msp430f449內(nèi)自帶A/D的主要特點:1、 12位轉(zhuǎn)換精度。2、有多種時鐘源可供選擇,內(nèi)帶時鐘發(fā)生器。

23、3、配有8個外部通道和4個內(nèi)部通道。4、內(nèi)置參考電源,并且參考電壓Vref有6種組合。5、采樣速度快,最快200Ks/s。6、四種工作模式: 1、單通道單次轉(zhuǎn)換模式:CONSEQ_0。 2、單通道多次轉(zhuǎn)換模式:CONSEQ_2。 3、序列通道單次轉(zhuǎn)換模式:CONSEQ_1 。 4、序列通道多次轉(zhuǎn)換模式:CONSEQ_3。二、ADC12內(nèi)部結(jié)構(gòu)圖:第22頁/共48頁第二十二頁,編輯于星期六:九點 十九分。第23頁/共48頁第二十三頁,編輯于星期六:九點 十九分。三、A/D轉(zhuǎn)換的一般步驟: 1、選擇轉(zhuǎn)換通道: P6SEL|=0 x01; /使能A/D通道A0(P6.0); P6SEL|=BIT7;

24、 /使能A/D通道A7(P6.7); 2、打開ADC12內(nèi)核,設(shè)置采樣周期,參考電壓: ADC12CTL0=ADC12ON; /打開ADC12內(nèi)核; ADC12CTL0=SHT0_0; /設(shè)置采樣周期為4/200KHZ*1 ADC12CTL0=REFON; /選擇內(nèi)部參考電壓為2.5V; ADC12CTL0=MSC; /多次采樣/轉(zhuǎn)換位 3、設(shè)置工作模式,轉(zhuǎn)換觸發(fā)方式: ADC12CTL1=SHP; /采樣信號SAMPCON來自采樣定時器 ADC12CTL1=ADC12SSEL_0; /采樣時鐘來自ADC12OSC為200KHZ ADC12CTL1=CONSEQ_2;/單通道多次轉(zhuǎn)換模式 4、

25、使能轉(zhuǎn)換(即允許轉(zhuǎn)換): ADC12CTL0|=ENC; /使能轉(zhuǎn)換; 第24頁/共48頁第二十四頁,編輯于星期六:九點 十九分。注意:當MSC=1且SHP=1時,僅首次轉(zhuǎn)換由SHI信號的上升沿觸發(fā)采樣定 時器,之后采樣轉(zhuǎn)換將在前一次轉(zhuǎn)換完成之后立即進行。5、開始轉(zhuǎn)換 ADC12CTL0|=ADC12SC; /開始轉(zhuǎn)換;四、幾種工作模式例程: 1、單通道單次轉(zhuǎn)換: void ADC_convert() P6SEL|=0 x01; /使能A/D通道A0(P6.0); ADC12CTL0=ADC12ON+ SHT0_0; /開ADC12內(nèi)核,設(shè)置采樣周期為4*200KHZ*1 ADC12CTL1=

26、SHP; /采樣信號SAMPCON來自采樣定時器 ADC12CTL0|=ENC; /使能轉(zhuǎn)換; ADC12CTL0|=ADC12SC; /開始轉(zhuǎn)換; int Read_result() int result; result= ADC12MEM0; return (result); 第25頁/共48頁第二十五頁,編輯于星期六:九點 十九分。2、單通道多次轉(zhuǎn)換: Void ADC_convert() P6SEL|=0 x02; /使能A/D通道A1; ADC12CTL0=ADC12ON+SHT0_8+MSC; /打開ADC12內(nèi)核,設(shè)置為首次觸發(fā)即可,確定采樣周期為4*mclk*64,選擇內(nèi)部參考

27、電壓為2.5v; ADC12CTL1=SHP+ADC12SSEL_2+CONSEQ_2; /設(shè)置為單通道多次轉(zhuǎn)換模式并且由采樣輸入信號的上升沿觸發(fā)采樣定時器 ; ADC12CTL0|=ENC; /使能轉(zhuǎn)換; ADC12CTL0|=ADC12SC; /開始轉(zhuǎn)換; int Read_result() int result; result= ADC12MEM1; return (result); 第26頁/共48頁第二十六頁,編輯于星期六:九點 十九分。3、序列通道單次轉(zhuǎn)換: void ADC_convert() P6SEL|=0 x0f; ADC12MCTL0=SREF_0+INCH_0; ADC

28、12MCTL1=SREF_0+INCH_1; ADC12MCTL2=SREF_0+INCH_2; ADC12MCTL3=SREF_0+INCH_3+EOS; /EOS為序列結(jié)束信號 ADC12CTL0=ADC12ON+MSC+ SHT0_0; /開ADC12內(nèi)核,設(shè)置采樣周期為4*200KHZ*1 ADC12CTL1=SHP+CONSEQ_1; /采樣信號SAMPCON來自采樣定時器 ADC12CTL0|=ENC; /使能轉(zhuǎn)換; ADC12CTL0|=ADC12SC; /開始轉(zhuǎn)換; _EINT(); /開中斷 #pragma vector=ADC_VECTOR_interrupt void A

29、DC12ISR(void) result0 = ADC12MEM0; result1 = ADC12MEM1; result2 = ADC12MEM2; result3 = ADC12MEM3;第27頁/共48頁第二十七頁,編輯于星期六:九點 十九分。4、序列通道多次轉(zhuǎn)換: void ADC_convert() P6SEL|=0 x0f; ADC12MCTL0=SREF_0+INCH_0; ADC12MCTL1=SREF_0+INCH_1; ADC12MCTL2=SREF_0+INCH_2; ADC12MCTL3=SREF_0+INCH_3+EOS; /EOS為序列結(jié)束信號 ADC12CTL0

30、=ADC12ON+MSC+ SHT0_0; /開ADC12內(nèi)核,設(shè)置采樣周期為4*200KHZ*1 ADC12CTL1=SHP+CONSEQ_3; /采樣信號SAMPCON來自采樣定時器 ADC12CTL0|=ENC; /使能轉(zhuǎn)換; ADC12CTL0|=ADC12SC; /開始轉(zhuǎn)換; _EINT(); /開中斷 #pragma vector=ADC_VECTOR_interrupt void ADC12ISR(void) result0 = ADC12MEM0; result1 = ADC12MEM1; result2 = ADC12MEM2; result3 = ADC12MEM3;第28

31、頁/共48頁第二十八頁,編輯于星期六:九點 十九分。6、USART一、串口是系統(tǒng)與外界聯(lián)系的重要手段,我們有時需要使用上位機實現(xiàn)系統(tǒng)調(diào)試 及現(xiàn)場數(shù)據(jù)的采集和控制,msp430f449中有兩個串口模塊USART0、USART1分別對應(yīng)P2.4、P2.5和P4.0、P4.1都可實現(xiàn) UART異步通信和SPI同步通信。二、串行異步通信的主要特點: 1、兩個獨立的移位寄存器:輸入、輸出寄存器。 2、傳輸7位或8位數(shù)據(jù),可采用奇校驗或偶校驗或無校驗。 3、數(shù)據(jù)在發(fā)送或接收時低位在先。 4、獨立的發(fā)送、接收中斷。 5、可編程實現(xiàn)分頻因子為整數(shù)或小數(shù)的波特率。三、USART模塊結(jié)構(gòu)圖:第29頁/共48頁第二

32、十九頁,編輯于星期六:九點 十九分。第30頁/共48頁第三十頁,編輯于星期六:九點 十九分。四、串口通信的一般步驟(無校驗): 1、選擇串口模塊(USART0、USART1)。 USART1: P4SEL=0X03; P4DIR=0X01; /P4.0為發(fā)送TXD,P4.1為接收RXD 2、在SWRST=1時,設(shè)置串口。 U1CTL=SWRST; / 復(fù)位USART,并設(shè)置串口 3、選擇波特率發(fā)生器時鐘。 UTCTL1=SSEL1; /UCLK=MCLK 4、使能發(fā)送、接收。 ME2=UTXE1+URXE1; /使能RXD TXD 5、設(shè)置字符長度。 U1CTL=CHAR; /設(shè)置字符長度為8

33、位,默認時為7位 6、設(shè)置波特率。 注:UBR=U1BR0+U1BR1; 其值應(yīng)大于3 U1BR0=0X1B; /存放波特率分頻因子的整數(shù)部分的低字節(jié) U1BR1=0X00; /存放波特率分頻因子的整數(shù)部分的高字節(jié) U1MCTL=0X03; /設(shè)置波特率為38400 7、SWRST=0,串口設(shè)置完畢。 U1CTL&=SWRST; /在SWRST為1之前設(shè)置串口 8、使能中斷。 IE2=URXIE1; /使能接收 中斷第31頁/共48頁第三十一頁,編輯于星期六:九點 十九分。7、PWM波一、Timer_A在增計數(shù)模式下的PWM輸出:void PWM_Creat(int a,int b)

34、TACTL=TASSEL_1+TACLR+ID_3; /選擇計數(shù)時鐘為ACLK,并進行8分頻,將計數(shù)器TAR清零 CCR0=255; /計數(shù)終值,方波頻率為:32768/256/8/2=8HZ CCTL1=OUTMOD_7; CCR1=a; /占空比為:a/256 CCTL2=OUTMOD_7; CCR2=b; /占空比為:b/256 P1DIR|=BIT2; /CCR1 P1SEL|=BIT2; P2DIR|=BIT0; /CCR2 P2SEL|=BIT0; TACTL|=MC_1; /選擇Timer_A為增計數(shù)模式 第32頁/共48頁第三十二頁,編輯于星期六:九點 十九分。二、增計數(shù)模式下

35、的輸出:第33頁/共48頁第三十三頁,編輯于星期六:九點 十九分。8、頭文件一、兩種頭文件使用方式: 1、#ifndef _ADC_H #define _ADC_H extern void ADC_convert(); extern int Read_result(); #endif 2、在工程里直接調(diào)用.C文件 第34頁/共48頁第三十四頁,編輯于星期六:九點 十九分。Msp430g2553 1、IO口 2、時鐘 3、中斷 4、定時 5、AD 6、PWM波第35頁/共48頁第三十五頁,編輯于星期六:九點 十九分。msp430launchpadMsp430g2553簡介:1、低工作電壓:1.8

36、3.6V2、超低功耗: 活動模式 :280UA(1MHZ,2.2V) 待機模式 : 0.5UA 掉電模式 : (RAM數(shù)據(jù)保持)0.1UA3、有5種節(jié)電模式4、從待機到喚醒的響應(yīng)時間不超過1us5、10位A/D轉(zhuǎn)換器 (帶有內(nèi)部參考源、采樣保持,最大采樣率200Ks/s)6、16位精簡指令結(jié)構(gòu)(RISC),6.25ns指令周期7、帶有3個捕獲/比較器結(jié)構(gòu)的16位定時器8、串行通信可軟件選擇UART/SPI/I2C三種模式9、可在線串行編程,不需要外部編程電壓11、FLASH存儲器為16KB,RAM為512B第36頁/共48頁第三十六頁,編輯于星期六:九點 十九分。Msp430g2553結(jié)構(gòu)圖第

37、37頁/共48頁第三十七頁,編輯于星期六:九點 十九分。1、I/O一、P口的基本特點:1、有P1、P2兩個可獨立編程的IO口。2、每個P口都有輸入、輸出、中斷功能。3、對P口控制寄存器的讀寫支持所有指令集。4、每一個P口都有獨立可編程的上拉、下拉電阻。二、P口的 基本操作: 大致同msp430f449相同。 注意:在將P2.6、P2.7作為普通IO口時,需要進行以下設(shè)置: P2SEL&=(BIT6+BIT7); 第38頁/共48頁第三十八頁,編輯于星期六:九點 十九分。三、IO口的復(fù)用:第39頁/共48頁第三十九頁,編輯于星期六:九點 十九分。2、時鐘一、時鐘源: 1、ACLK:系統(tǒng)輔

38、助時鐘,來自 LFXT1CLK 為32768HZ。 2、MCLK:系統(tǒng)主時鐘,有以下5種選擇: 1、32768HZ,來自ACLK。 2、1MHZ: BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ; 3、8MHZ: BCSCTL1 = CALBC1_8MHZ; DCOCTL = CALDCO_8MHZ; 4、12MHZ: BCSCTL1 = CALBC1_12MHZ; DCOCTL = CALDCO_12MHZ; 5、16MHZ: BCSCTL1 = CALBC1_16MHZ; DCOCTL = CALDCO_16MHZ; 3、SMCLK:子系統(tǒng)時鐘,一般

39、為16MHZ。 重點 第40頁/共48頁第四十頁,編輯于星期六:九點 十九分。二、時鐘結(jié)構(gòu)圖:第41頁/共48頁第四十一頁,編輯于星期六:九點 十九分。3、中斷例程: void interrupt_initial() P1DIR&=BIT7; /P1.7為輸入 P1SEL|=BIT7; P1IE|=BIT7; /P1.7中斷允許 P1IES|=0 x80; /P1.7下降沿觸發(fā) P1IFG=0; /P1.7中斷標志清除,對于多源中斷必須先清中斷標志再打開中斷 P1DIR|=BIT6; P1OUT&=BIT6; _EINT(); /總中斷允許#pragma vector=PORT1_VECTOR_interrupt void Port_1(void) P1IFG&=BIT7; /P1.7中斷標志清除 P1OUT|=BIT6; /點亮綠燈第42頁/共48頁第四十二頁,編輯于星期六:九點 十九分。4、定時例程:void zengjishu() TACTL=TASSEL_2+TACLR+ID_3; /選擇計數(shù)時鐘為MCLK,并進行8分頻,將計數(shù)器TAR清零 CCTL0=CCIE; /使能中斷 CCR0=65535; /計數(shù)終值,方波頻率為:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論