電設(shè)工作小結(jié)之——MSP430G2553學(xué)習(xí)筆記—2_第1頁
電設(shè)工作小結(jié)之——MSP430G2553學(xué)習(xí)筆記—2_第2頁
電設(shè)工作小結(jié)之——MSP430G2553學(xué)習(xí)筆記—2_第3頁
電設(shè)工作小結(jié)之——MSP430G2553學(xué)習(xí)筆記—2_第4頁
電設(shè)工作小結(jié)之——MSP430G2553學(xué)習(xí)筆記—2_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、電設(shè)工作小結(jié)之MSP430G2553學(xué)習(xí)筆記2接上一篇: (四),ADC10 1,ADC10是十位的AD,在g2553上有A0A7八個可以外接的AD通道,A10接到片上的溫度傳感器上,其他的通道都接在內(nèi)部的V或GND上。因為是為的所以計算公式如下: 2 ,ADC參考電壓的選擇:ADC的參考電壓可以為: 由ADC控制寄存器0 ADC10CTL0控制。但是要提高ADC的精度的話,盡量不要用內(nèi)部的參考電壓,最好外接一個比較穩(wěn)定的電壓作為參考電壓,因為內(nèi)部的產(chǎn)生的參考電壓不是特別穩(wěn)定或精度不是特別的高。例如我在使用時遇到的情況如下:Vref設(shè)為2.5V 

2、; 但實際的值大概為2.475V, 選擇VCC  VSS作為參考,用電壓表測得大概為3.58V  還是不小的偏差的。另外,在有可能的情況下,盡量采用較大的VR+和VR-,以減小紋波對采樣結(jié)果的影響。    3,ADC10的采樣方式有:單通道單次采樣,單通道多次采樣,多通道單次采樣,多通道多次采樣。4,DTC:因為ADC10只有一個采樣結(jié)果存儲寄存器ADC10MEM,所以除了在單通道單次采樣的模式下,其他的三個模式都必須使用DCT,否則轉(zhuǎn)換結(jié)果會不停地被新的結(jié)果給覆蓋。DTC是轉(zhuǎn)換結(jié)果傳送控制,也就是轉(zhuǎn)換結(jié)

3、果可以不用CPU的干預(yù),就可以自動地存儲在指定的存儲空間內(nèi)。使用這種方式轉(zhuǎn)換速度快,訪問方便,適用于高速采樣模式中。DTC的使用可以從下面的例子中很容易看明白:#include <msp430g2553.h>#include "ser_12864.h"uchar s1="DTC:"uchar s2="2_cha_2_time_DTC"void ADC_init() ADC10CTL1 = CONSEQ_3 + INCH_1;     / 2通道多次轉(zhuǎn)換, 最大轉(zhuǎn)換

4、通道為A1  ADC10CTL0 = ADC10SHT_2 + MSC + ADC10ON + ADC10IE; / ADC10ON, interrupt enabl  參考電壓選默認(rèn)值VCC和VSS  /采樣保持時間為16 x ADC10CLKs,ADC內(nèi)核開,中斷使能   MSC多次轉(zhuǎn)換選擇開  /如果MSC置位,則第一次開始轉(zhuǎn)換時需要觸發(fā)源觸發(fā)一次,以后的轉(zhuǎn)換會自動進行  中斷使能  /使用DTC時,當(dāng)一個塊傳送結(jié)束,產(chǎn)生中斷 &

5、#160;/數(shù)據(jù)傳送控制寄存器0 ADC10DTC0設(shè)置為默認(rèn)模式:單傳送塊模式,單塊傳送完停止  ADC10DTC1 = 0x04; /數(shù)據(jù)傳送控制寄存器1 4 conversions  定義在每塊的傳送數(shù)目  一共采樣4次 所以單塊傳送4次  /以后就停止了傳送 因為是兩通道的,所以是每個通道采樣數(shù)據(jù)傳送2次  ADC10AE0 |= BIT0+BIT1;         / P1.0 P1.1 ADC

6、 option select 使能模擬輸入腳A0 A1     /不知道為什么,當(dāng)P10 P11都懸空時,采樣值不同,用電壓表測得懸空電壓不同,但是當(dāng)都接上采樣源的時候,  /采樣是相同的 void main(void)uint adc_sample8=0;    /存儲ADC序列采樣結(jié)果WDTCTL = WDTPW+WDTHOLD;    BCSCTL1 = CALBC1_12MHZ;  /設(shè)定cpu時鐘DCO頻率

7、為12MHz    DCOCTL = CALDCO_12MHZ;    P2DIR |=BIT3+BIT4;      /液晶的兩條線    init_lcd();    ADC_init();    wr_string(0,0,s1);    wr_string(0,3,s2); 

8、60;  for (;)           ADC10CTL0 &= ENC;   /ADC不使能  其實這句話可以放在緊接著CPU喚醒之后的,因為CPU喚醒了,說明我們想要的     /轉(zhuǎn)換數(shù)據(jù)傳送完成了,如果ADC繼續(xù)轉(zhuǎn)換,那么轉(zhuǎn)換結(jié)果也不再傳輸,是無用的。所以緊接著放在CPU喚醒之后     /計時關(guān)閉

9、ADC,有利于降低功耗        while (ADC10CTL1 & BUSY);               / Wait if ADC10 core is active  等待忙        ADC10SA = (unsigned int)adc_s

10、ample;   /數(shù)據(jù)傳送開始地址寄存器  設(shè)置DTC的開始地址  Data buffer start        /設(shè)置數(shù)據(jù)開始傳送的地址為數(shù)組adc_sample的首地址,因為寄存器ADC10SA和轉(zhuǎn)換結(jié)果都是16位的,所以要把        /地址強制轉(zhuǎn)換為16位的int或unsigned int     &

11、#160;  /應(yīng)該也可以用指針直接訪問DTC的存儲區(qū),還沒試過        /例如:前面定義了單塊傳送4次數(shù)據(jù),所以每次傳送完成了一個塊,也就是4次,就會把中斷標(biāo)志位置位,產(chǎn)生中斷        /因為上面設(shè)置的地址為數(shù)組adc_sample的首地址,所以每次轉(zhuǎn)換的結(jié)果就會傳送到該數(shù)組的前4位上,所以如果        /一切正常的話

12、,數(shù)組里應(yīng)該是前4位為轉(zhuǎn)換的結(jié)果,后4位為初始值0  通過下面的顯示,驗證轉(zhuǎn)換是正確的        /一次觸發(fā)首先對A1、A0采樣,放入a0和a1中,再對A1、A0采樣,放入a2和a3中。如此循環(huán)下去。        /驗證得知,當(dāng)多通道采樣時,先采高的通道,再采低的通道。如上面每次采樣時,先采A1 再A0        /因為一共采樣

13、傳送4次,所以數(shù)組的后4位為初始值0         ADC10CTL0 |= ENC + ADC10SC; / Sampling and conversion start   ADC使能,開始轉(zhuǎn)換 ADC10SC為采樣觸發(fā)源        /不需要cpu的干預(yù),DTC就可以把采樣結(jié)果存儲到指定的存儲區(qū)中        

14、;_bis_SR_register(CPUOFF + GIE);    / LPM0, ADC10_ISR will force exit  如果轉(zhuǎn)換結(jié)果傳送完成,        /就會進入中斷,CPU喚醒 繼續(xù)往下運行        wr_int(2,0,adc_sample0);   /顯示轉(zhuǎn)換結(jié)果  A1 

15、60;      wr_int(6,0,adc_sample1);   /A0        wr_int(0,1,adc_sample2);   /A1        wr_int(3,1,adc_sample3);   /A0     

16、   wr_int(6,1,adc_sample4);        wr_int(0,2,adc_sample5);        wr_int(3,2,adc_sample6);        wr_int(6,2,adc_sample7);       

17、/ ADC10 interrupt service routine#pragma vector=ADC10_VECTOR_interrupt void ADC10_ISR(void)  /中斷響應(yīng)以后,中斷標(biāo)志位自動清零  _bic_SR_register_on_exit(CPUOFF);        / Clear CPUOFF bit from 0(SR)上面的例子是把存儲結(jié)果存儲在了uint型的數(shù)組中。也可以用指針直接指定要存放的地址,然后再用指針進行訪問(理論上可以

18、,但還沒有試過)。也可以把存儲結(jié)果直接存放在一個16位的寄存器中,如:ADC10SA = (unsigned int)&TACCR1;        / Data transfer location  把轉(zhuǎn)換結(jié)果存儲在TACCR1所在的    /位置處,就相當(dāng)于存儲在TACCR1中 因為ADC轉(zhuǎn)換結(jié)果和寄存器TACCR1都是16位的,所以要把地址強制轉(zhuǎn)換為16位的    /int 或 unsigned int

19、型 5,ADC采樣注意事項:用片上的ADC10進行采樣,如果外部分壓電路的電阻過大(比如幾K以上),AD引腳會把電壓拉高,使采樣結(jié)果發(fā)生很大的偏差。應(yīng)換成小電阻(幾十幾百歐),如果要求更精確的話,要加運放進行電壓跟隨。  6,AD采樣交流信號:一般是50Hz,100Hz,1000Hz。方法是在交流信號的一個周期內(nèi)采樣多次(如40次,30次等),然后利用公式可以求出交流信號的有效值,平均值等。  7,片上溫度傳感器ADC的A10通道接片上的溫度傳感器,MSP430內(nèi)嵌的溫度傳感器實際上就是一個輸出電壓隨環(huán)境溫度而變化的溫度二極管。當(dāng)使用片上溫度傳

20、感器時,采樣周期必須大于30us    片上溫度傳感器的偏移很大,所以精確測量需要進行校準(zhǔn)。選擇片上溫度傳感器INCH_10,ADC其他的設(shè)置都和外部通道的設(shè)置相同,包括參考電壓源的選擇和轉(zhuǎn)換存儲的選擇選擇了片上溫度傳感器,會自動地打開片上參考電壓源發(fā)生器作為溫度傳感器的電壓源,但是這并不會時能VREF+輸出,也不會影響AD轉(zhuǎn)換參考源的選擇,轉(zhuǎn)換參考源的選擇和其他通道的選擇相同公式為:VTEMP=0.00355(TEMPC)+0.986片上溫度傳感器的校準(zhǔn),可以參見我的溫度傳感器校準(zhǔn)程序,也可以參考其他的論文。下面只給出程序的一部分:void ADC_i

21、nit()ADC10CTL0 = ADC10SHT_2 + ADC10ON + ADC10IE; / ADC10ON, interrupt enabled 參考電壓選默認(rèn)值VCC和VSS/采樣保持時間為16 x ADC10CLKs,ADC開,中斷使能ADC10CTL1 = INCH_10;       / ADC輸入通道選擇A10,為內(nèi)部的溫度傳感器/其他是默認(rèn),采樣觸發(fā)輸入源選擇為ADC10SC,采樣輸入信號不翻轉(zhuǎn),轉(zhuǎn)換時鐘選擇內(nèi)部時鐘源:ADC10OSC,3.76.3MHz/不分頻,單通道單次轉(zhuǎn)換/ADC10AE0 |=

22、 0x02;                         / PA.1 ADC option select 使能模擬輸入腳A1/P1DIR |= 0x01;                

23、;            / Set P1.0 to output direction  /所以是P11為ADC輸入腳,P10控制led  (五),通用串行通信接口(USCI)   1,USCI_A:支持UART,  IrDA,  SPI      USCI_B:支持I2C, SPI  &

24、#160;2,UART   這個模塊沒什么好說的,和其他的一寫處理器如S12,ARM等差不多。只要設(shè)置好幾個控制寄存器,波特率,寫幾個收發(fā)函數(shù)就可以了。下面就給出msp430g2553于PC用UART通信的基本程序:#include  "msp430g2553.h"unsigned char rev;char *string1="Helloworld!"char string2="Get it!n"    /n是換行符void putchar(u

25、nsigned char c)    /發(fā)送字符函數(shù)while (!(IFG2&UCA0TXIFG);                / USCI_A0 TX buffer ready? 等待TX buffer為空UCA0TXBUF = c;            

26、60;       / TX -> RXed character  發(fā)送字符cvoid putstr(char *s)   /發(fā)送字符串函數(shù)IE2 &= UCA0RXIE;   /發(fā)送時先關(guān)閉接收中斷,不接收while(*s)!='0')    /如果沒有發(fā)完,就繼續(xù)循環(huán)發(fā)送putchar(*s);/ putchar('n');   

27、;  /發(fā)送換行符s+;IE2 |= UCA0RXIE;    /發(fā)送完了打開接收中斷void main(void)  WDTCTL = WDTPW + WDTHOLD;                 / Stop WDT  P1DIR=BIT0;  BCSCTL1 = CALBC1_1MHZ; 

28、                   / Set DCO 為1MHz  DCOCTL = CALDCO_1MHZ;  P1SEL = BIT1 + BIT2 ;                 

29、60;   / P1.1 = RXD, P1.2=TXD  P1SEL2 = BIT1 + BIT2;     /第二外圍模式選擇/  UCA0CTL1 |= UCSSEL_2;           / SMCLK 其他默認(rèn):軟件復(fù)位使能 USCI邏輯保持在復(fù)位狀態(tài),用于設(shè)置串口  /UCA0CTL0全部為默認(rèn)狀態(tài):無奇偶校驗,LSB first,

30、8bit_data,一位停止位,UART模式,異步模式/  UCA0BR0 = 8;                              / SMCLK 1MHz 115200    8/  UCA0BR1 = 0

31、;                              / 1MHz 115200/  UCA0MCTL = UCBRS2 + UCBRS0;           

32、    / Modulation UCBRSx = 5  /下面是選擇ACLK,波特率設(shè)置為固定的  UCA0CTL1 |= UCSSEL_1;      /ACLK  UCA0BR0 = 3;                    

33、60;         / ACLK 32768Hz 9600   32768Hz/9600 = 3.41  UCA0BR1 = 0;                           &

34、#160;  / 32768Hz 9600  UCA0MCTL = UCBRS1 + UCBRS0;               / Modulation UCBRSx = 3  UCA0CTL1 &= UCSWRST;             

35、60;       / *Initialize USCI state machine*  初始化釋放,可以操作  IE2 |= UCA0RXIE;                          / Enable USCI_A0

36、 RX interrupt  接收中斷使能  _bis_SR_register(LPM0_bits + GIE);       / Enter LPM0, interrupts enabled/ Echo back RXed character, confirm TX buffer is ready first#pragma vector=USCIAB0RX_VECTOR_interrupt void USCI0RX_ISR(void)  while (!(IFG2

37、&UCA0TXIFG);                / USCI_A0 TX buffer ready? 等待TX buffer為空  UCA0TXBUF = UCA0RXBUF;                   

38、 / TX -> RXed character  發(fā)送接收到是數(shù)據(jù)  rev=UCA0RXBUF;  if(rev&0x01)    P1OUT |= BIT0;  putstr(string1);  putstr(string2);    else  P1OUT &= BIT0;注意:關(guān)于波特率的設(shè)置這一塊還沒有看懂,但上面的例子總的設(shè)置是對的值得說明的是:可以用

39、定時器來實現(xiàn)串口通信功能,例子還沒有看。   3,對于SPI和I2C,有時有可能會用于g2553和其他的一些芯片、設(shè)備的通信用,還沒沒仔細看。 (六),比較器A   Comparator_A+  1,是一個模擬電壓比較器,主要功能是指出兩個輸入電壓CA0和CA1的大小關(guān)系,然后由輸出信號CAOUT輸出。  2,輸出:如果正端輸入電壓大于負(fù)端輸入電壓,輸入為1。如果負(fù)端輸入電壓大于正端輸入電壓,輸出為0;  3,最終輸出信號的上升沿或下降沿可以設(shè)置為具有中斷能力,中斷

40、響應(yīng)后,硬件會自動清除中斷標(biāo)志位CAIFG,也可以被軟件清除。  4,Comparator_A+支持精密的斜坡AD轉(zhuǎn)換,供電電壓檢測和監(jiān)視外部模擬信號。  5,比較器的其中一路可以接參考電壓,有0.25VCC, 0.5VCC, 三極管的閥值電壓0.55V也可以兩路信號都接外部的模擬信號。  6,更詳細的內(nèi)容,參見用戶只能,下面的例子是簡單的用比較器A比較兩個輸入模擬電壓的高低,有CAOUT輸出:/主要功能是比較兩個輸入信號的大小關(guān)系#include  <msp430g2553.h>void delay(

41、void);                           / Software delayvoid main (void)  WDTCTL = WDTPW + WDTHOLD;          

42、60;      / Stop WDT  CACTL2 = P2CA4;    / CA1/P1.1 = +comp 正輸入端信號選擇CA1,負(fù)輸入端信號不連接外部輸入信號  /其他位的設(shè)置為默認(rèn):比較器輸出不濾波 , CAOUT為比較器的輸出結(jié)果  CCTL0 = CCIE;             

43、60;               / CCR0 interrupt enabled  TACTL = TASSEL_2 + ID_3 + MC_2;           / SMCLK/8, cont-mode  _EINT();     

44、0;                            / enable interrupts  while (1)               

45、                  / Loop  /比較器A控制寄存器1 CACTL1采用的是默認(rèn)設(shè)置:參考電壓源VCAREF加到比較器的正輸入端,內(nèi)部參考源關(guān),比較器關(guān),/中斷不使能    CACTL1 = 0x00;           

46、60;              / No reference voltage    _BIS_SR(LPM0_bits);                     / Enter LPM0 

47、0;  CACTL1 = CAREF0 + CAON;                 / 參考源為0.25*Vcc, Comp. on    _BIS_SR(LPM0_bits);               

48、0;     / Enter LPM0    CACTL1 = CAREF1 + CAON;                 / 參考源為0.5*Vcc, Comp. on    _BIS_SR(LPM0_bits);       

49、;              / Enter LPM0    CACTL1 = CAREF1 + CAREF0 + CAON;        /參考源為三極管的閥值電壓 0.55V, Comp. on    _BIS_SR(LPM0_bits);    

50、60;                / Enter LPM0  / Timer A0 interrupt service routine#pragma vector=TIMER0_A0_VECTOR_interrupt void Timer_A (void)    _BIC_SR_IRQ(LPM0_bits);     

51、60;           / Clear LPM0 bits from 0(SR)    7,也可以用比較器A監(jiān)視供電電壓,用0.25VCC和三極管的閥值電壓0.55V進行比較,從而監(jiān)視供電電壓的高低,如果電壓低于某個值時,可以做某種動作比如報警電池電量過低等。 (七),低功耗模式1,TI msp430單片機是一個特別強調(diào)超低功耗的單片機系列。對于低功耗的實現(xiàn),豐富的中斷和合理的時鐘系統(tǒng)是必須的,另外相對獨立的外設(shè),可以不在CPU的干

52、預(yù)下獨立地工作,這樣減小了CPU的工作時間,也大幅降低了系統(tǒng)功耗。2,msp430能夠用中斷迅速把CPU從低功耗模式中喚醒,喚醒時間小于1us。這就保證了系統(tǒng)的低功耗。讓CPU工作在脈沖狀態(tài),最大限度地讓CPU處于休眠狀態(tài),只有在一些需要CPU干預(yù)的操作或計算時,才把CPU喚醒。另外,把一些無關(guān)的外圍模塊也都關(guān)閉,使一些需要的模塊盡量單獨工作,從而可以把CPU休眠。合理地利用中斷,在需要的時間喚醒cpu。    3,msp430應(yīng)用系統(tǒng)價格和電流消耗等因素會影響CPU與外圍模塊對時鐘的需求,所以系統(tǒng)使用不同的時鐘信號:ACLK, MCLK, SMCLK。

53、用戶通過程序可以選擇低頻或高頻,這樣可以根據(jù)實際需要來選擇合適的系統(tǒng)時鐘頻率,這3種不同的頻率的時鐘輸出給出不同的模塊,從而更合理地利用系統(tǒng)的電源,實現(xiàn)整個系統(tǒng)的超低功耗。4,單片機的工作模式有:活動模式是(AM),低功耗模式0(LPM0)低功耗模式4(LPM4)。不同的低功耗模式禁止不同的模塊,適應(yīng)不同的需求。5,各種低功耗模式的配置有控制位:SCG1,SCG2,OscOff, CPUOff由軟件來配置。而各種低功耗模式又可通過中斷的方式會到活動模式。在CCS的編譯系統(tǒng)中,已經(jīng)做好了各種低功耗模式的宏定義,在軟件中直接調(diào)用就可以了,宏定義如下:#ifdef _ASM_HEADER_#defi

54、ne LPM0                   (CPUOFF)#define LPM1                   (SCG0+CPUOFF)#define LPM2   &#

55、160;               (SCG1+CPUOFF)#define LPM3                   (SCG1+SCG0+CPUOFF)#define LPM4      &

56、#160;            (SCG1+SCG0+OSCOFF+CPUOFF)#else#define LPM0_bits              (CPUOFF)#define LPM1_bits           &

57、#160;  (SCG0+CPUOFF)#define LPM2_bits              (SCG1+CPUOFF)#define LPM3_bits              (SCG1+SCG0+CPUOFF)#define LPM4_bits   &#

58、160;          (SCG1+SCG0+OSCOFF+CPUOFF)#include "in430.h"#define LPM0         _bis_SR_register(LPM0_bits)        #define LPM0_EXIT    _

59、bic_SR_register_on_exit(LPM0_bits)#define LPM1         _bis_SR_register(LPM1_bits)        #define LPM1_EXIT    _bic_SR_register_on_exit(LPM1_bits)#define LPM2      &

60、#160;  _bis_SR_register(LPM2_bits)        #define LPM2_EXIT    _bic_SR_register_on_exit(LPM2_bits)#define LPM3         _bis_SR_register(LPM3_bits)      

61、60; #define LPM3_EXIT    _bic_SR_register_on_exit(LPM3_bits)#define LPM4         _bis_SR_register(LPM4_bits)        #define LPM4_EXIT    _bic_SR_register_on_exit(LPM4_bit

62、s)#endif   6,具體的例子就不再舉了,就是在CPU不需要工作的時候進入低功耗模式,在需要工作的時候,通過中斷喚醒。下面說說一般的低功耗的原則:  (1),最大化LPM3的時間,用32KHz晶振作為ACLK時鐘,DCO用于CPU激活后的突發(fā)短暫運行。  (2),用接口模塊代替軟件驅(qū)動功能。  (3),用中斷控制程序運行。  (4),用可計算的分支代替標(biāo)志位測試產(chǎn)生的分支。  (5),用快速查表代替冗長的軟件計算。  (6),在冗長的軟件計

63、算中使用單周的CPU寄存器。  (7),避免頻繁的子程序和函數(shù)調(diào)用。  (8),盡可能直接用電池供電。此外,在設(shè)計外設(shè)時還有一些常規(guī)原則:  (1),將不用的FETI輸入端連接到Vss。  (2),JTAG端口TMS, TCK和TDI不要連接到Vss。  (3),CMOS輸入端不能有浮空節(jié)點,將所有輸入端接適當(dāng)?shù)碾娖健?#160; (4),不論對于內(nèi)核還是對于各外圍模塊,選擇盡可能低的運行頻率,如果不影響功能應(yīng)設(shè)計自動關(guān)機。  (八),看門狗定時器1,單片機的看門狗

64、定時器的原始功能是防止程序出錯跑飛,但是在系統(tǒng)的研發(fā)階段,一般不使用看門狗的。2,msp的看門狗可以工作在看門狗模式和間隔定時器模式,在間隔定時器模式下,就可以當(dāng)一個普通的定時器使用。其中工作模式的宏定義如下:#define _MSP430_HAS_WDT_                   SFR_16BIT(WDTCTL);      

65、60;                    #define WDTIS0                 (0x0001)#define WDTIS1      

66、60;          (0x0002)#define WDTSSEL                (0x0004)#define WDTCNTCL               (0x0

67、008)#define WDTTMSEL               (0x0010)#define WDTNMI                 (0x0020)#define WDTNMIES       

68、        (0x0040)#define WDTHOLD                (0x0080)#define WDTPW                  (0x5

69、A00)#define WDT_MDLY_32         (WDTPW+WDTTMSEL+WDTCNTCL)                        #define WDT_MDLY_8      

70、    (WDTPW+WDTTMSEL+WDTCNTCL+WDTIS0)                 #define WDT_MDLY_0_5        (WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1)       

71、          #define WDT_MDLY_0_064      (WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1+WDTIS0)          #define WDT_ADLY_1000       (WDTPW+WDTTMSEL+WDTC

72、NTCL+WDTSSEL)                #define WDT_ADLY_250        (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS0)         #define WDT_ADLY_16 

73、0;       (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1)         #define WDT_ADLY_1_9        (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0)  #define WDT_MRST_32  

74、0;      (WDTPW+WDTCNTCL)                                 #define WDT_MRST_8     

75、     (WDTPW+WDTCNTCL+WDTIS0)                          #define WDT_MRST_0_5        (WDTPW+WDTCNTCL+WDTIS1)

76、                          #define WDT_MRST_0_064      (WDTPW+WDTCNTCL+WDTIS1+WDTIS0)         &#

77、160;         #define WDT_ARST_1000       (WDTPW+WDTCNTCL+WDTSSEL)                         #defi

78、ne WDT_ARST_250        (WDTPW+WDTCNTCL+WDTSSEL+WDTIS0)                  #define WDT_ARST_16         (WDTPW+WDTCNTCL+WDTSSEL+W

79、DTIS1)                  #define WDT_ARST_1_9        (WDTPW+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0)           下面舉一個看門狗工作于間隔定

80、時器模式下的例子:#include <msp430g2553.h>void main(void)  WDTCTL = WDT_MDLY_32;                     / Set Watchdog Timer interval to 30ms  SMCLK計時  IE1 |= WDTIE; 

81、                            / Enable WDT interrupt 間隔定時器模式中斷使能  P1DIR |= 0x01;            

82、                / Set P1.0 to output direction  _BIS_SR(LPM0_bits + GIE);                 / Enter LPM0 w/ interrupt/ Watchdog Timer interrupt service routine#pragma vector=WDT_VECTOR_interrupt void watchdog_timer(void)   /WDTIFG中斷標(biāo)志自動清除 &

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論