msp430的學習筆記很好用的_第1頁
msp430的學習筆記很好用的_第2頁
msp430的學習筆記很好用的_第3頁
msp430的學習筆記很好用的_第4頁
msp430的學習筆記很好用的_第5頁
已閱讀5頁,還剩15頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

整體旳程序設計構造,涉及了所有外圍模塊及內部時鐘,中斷,定期旳初始化。具體狀況人們可以根據自己旳需要添加或者減少,記住,模塊化設計時最有力旳武器。

/*****************************************************************************\

文獻名:main.c

描述:MSP430框架程序。合用于MSP430F149,其她型號需要合適變化。

不使用旳中斷函數保存或者刪除都可以,但保存時應保證不要打開不需要旳中斷。

\*****************************************************************************/

//頭文獻

#include<MSP430x14x.h>

//函數聲明

voidInitSys();

intmain(void)

{

WDTCTL=WDTPW+WDTHOLD;

//關閉看門狗

InitSys();

//初始化

start:

//如下填充顧客代碼

LPM3;

//進入低功耗模式n,n:0~4。若不但愿進入低功耗模式,屏蔽本句

gotostart;

}

/*****************************************************************************

系統初始化

******************************************************************************/

voidInitSys()

{

unsignedintiq0;

//使用XT2振蕩器

BCSCTL1&=~XT2OFF;

//打開XT2振蕩器

do

{

IFG1&=~OFIFG;

//清除振蕩器失效標志

for(iq0=0xFF;iq0>0;iq0--);

//延時,等待XT2起振

}

while((IFG1&OFIFG)!=0);

//判斷XT2與否起振

BCSCTL2=SELM_2+SELS;

//選擇MCLK、SMCLK為XT2

//如下填充顧客代碼,對多種模塊、中斷、外圍設備等進行初始化

_EINT();//打開全局中斷控制,若不需要打開,可以屏蔽本句

}

/*****************************************************************************

端口2中斷函數

******************************************************************************/

#pragmavector=PORT2_VECTOR

__interruptvoidPort2()

{

//如下為參照解決程序,不使用旳端口應當刪除其對于中斷源旳判斷。

if((P2IFG&BIT0)==BIT0)

{

//解決P2IN.0中斷

P2IFG&=~BIT0;//清除中斷標志

//如下填充顧客代碼

}

elseif((P2IFG&BIT1)==BIT1)

{

//解決P2IN.1中斷

P2IFG&=~BIT1;//清除中斷標志

//如下填充顧客代碼

}

elseif((P2IFG&BIT2)==BIT2)

{

//解決P2IN.2中斷

P2IFG&=~BIT2;//清除中斷標志

//如下填充顧客代碼

}

elseif((P2IFG&BIT3)==BIT3)

{

//解決P2IN.3中斷

P2IFG&=~BIT3;//清除中斷標志

//如下填充顧客代碼

}

elseif((P2IFG&BIT4)==BIT4)

{

//解決P2IN.4中斷

P2IFG&=~BIT4;//清除中斷標志

//如下填充顧客代碼

}

elseif((P2IFG&BIT5)==BIT5)

{

//解決P2IN.5中斷

P2IFG&=~BIT5;//清除中斷標志

//如下填充顧客代碼

}

elseif((P2IFG&BIT6)==BIT6)

{

//解決P2IN.6中斷

P2IFG&=~BIT6;//清除中斷標志

//如下填充顧客代碼

}

else

{

//解決P2IN.7中斷

P2IFG&=~BIT7;//清除中斷標志

//如下填充顧客代碼

}

LPM3_EXIT;//退出中斷后退出低功耗模式。若退出中斷后要保存低功耗模式,將本句屏蔽

}

/*****************************************************************************

USART1發送中斷函數

******************************************************************************/

#pragmavector=USART1TX_VECTOR

__interruptvoidUsart1Tx()

{

//如下填充顧客代碼

LPM3_EXIT;//退出中斷后退出低功耗模式。若退出中斷后要保存低功耗模式,將本句屏蔽

}

/*****************************************************************************

USART1接受中斷函數

******************************************************************************/

#pragmavector=USART1RX_VECTOR

__interruptvoidUstra1Rx()

{

//如下填充顧客代碼

LPM3_EXIT;//退出中斷后退出低功耗模式。若退出中斷后要保存低功耗模式,將本句屏蔽

}

/*****************************************************************************

端口1中斷函數

多中斷中斷源:P1IFG.0~P1IFG7

進入中斷后應一方面判斷中斷源,退出中斷前應清除中斷標志,否則將再次引起中斷

******************************************************************************/

#pragmavector=PORT1_VECTOR

__interruptvoidPort1()

{

//如下為參照解決程序,不使用旳端口應當刪除其對于中斷源旳判斷。

if((P1IFG&BIT0)==BIT0)

{

//解決P1IN.0中斷

P1IFG&=~BIT0;//清除中斷標志

//如下填充顧客代碼

}

elseif((P1IFG&BIT1)==BIT1)

{

//解決P1IN.1中斷

P1IFG&=~BIT1;//清除中斷標志

//如下填充顧客代碼

}

elseif((P1IFG&BIT2)==BIT2)

{

//解決P1IN.2中斷

P1IFG&=~BIT2;//清除中斷標志

//如下填充顧客代碼

}

elseif((P1IFG&BIT3)==BIT3)

{

//解決P1IN.3中斷

P1IFG&=~BIT3;//清除中斷標志

//如下填充顧客代碼

}

elseif((P1IFG&BIT4)==BIT4)

{

//解決P1IN.4中斷

P1IFG&=~BIT4;//清除中斷標志

//如下填充顧客代碼

}

elseif((P1IFG&BIT5)==BIT5)

{

//解決P1IN.5中斷

P1IFG&=~BIT5;//清除中斷標志

//如下填充顧客代碼

}

elseif((P1IFG&BIT6)==BIT6)

{

//解決P1IN.6中斷

P1IFG&=~BIT6;//清除中斷標志

//如下填充顧客代碼

}

else

{

//解決P1IN.7中斷

P1IFG&=~BIT7;//清除中斷標志

//如下填充顧客代碼

}

LPM3_EXIT;//退出中斷后退出低功耗模式。若退出中斷后要保存低功耗模式,將本句屏蔽

}

/*****************************************************************************

定期器A中斷函數

多中斷中斷源:CC1~2TA

******************************************************************************/

#pragmavector=TIMERA1_VECTOR

__interruptvoidTimerA1()

{

//如下為參照解決程序,不使用旳中斷源應當刪除

switch(__even_in_range(TAIV,10))

{

case2:

//捕獲/比較1中斷

//如下填充顧客代碼

break;

case4:

//捕獲/比較2中斷

//如下填充顧客代碼

break;

case10:

//TAIFG定期器溢出中斷

//如下填充顧客代碼

break;

}

LPM3_EXIT;//退出中斷后退出低功耗模式。若退出中斷后要保存低功耗模式,將本句屏蔽

}

/*****************************************************************************

定期器A中斷函數

中斷源:CC0

******************************************************************************/

#pragmavector=TIMERA0_VECTOR

__interruptvoidTimerA0()

{

//如下填充顧客代碼

LPM3_EXIT;//退出中斷后退出低功耗模式。若退出中斷后要保存低功耗模式,將本句屏蔽

}

/*****************************************************************************

AD轉換器中斷函數

多中斷源:摸擬0~7、VeREF+、VREF-/VeREF-、(AVcc-AVss)/2

沒有解決ADC12TOV和ADC12OV中斷標志

******************************************************************************/

#pragmavector=ADC_VECTOR

__interruptvoidAdc()

{

//如下為參照解決程序,不使用旳中斷源應當刪除

if((ADC12IFG&BIT0)==BIT0)

{

//通道0

//如下填充顧客代碼

}

elseif((ADC12IFG&BIT1)==BIT1)

{

//通道1

//如下填充顧客代碼

}

elseif((ADC12IFG&BIT2)==BIT2)

{

//通道2

//如下填充顧客代碼

}

elseif((ADC12IFG&BIT3)==BIT3)

{

//通道3

//如下填充顧客代碼

}

elseif((ADC12IFG&BIT4)==BIT4)

{

//通道4

//如下填充顧客代碼

}

elseif((ADC12IFG&BIT5)==BIT5)

{

//通道5

//如下填充顧客代碼

}

elseif((ADC12IFG&BIT6)==BIT6)

{

//通道6

//如下填充顧客代碼

}

elseif((ADC12IFG&BIT7)==BIT7)

{

//通道7

//如下填充顧客代碼

}

elseif((ADC12IFG&BIT8)==BIT8)

{

//VeREF+

//如下填充顧客代碼

}

elseif((ADC12IFG&BIT9)==BIT9)

{

//VREF-/VeREF-

//如下填充顧客代碼

}

elseif((ADC12IFG&BITA)==BITA)

{

//溫度

//如下填充顧客代碼

}

elseif((ADC12IFG&BITB)==BITB)

{

//(AVcc-AVss)/2

//如下填充顧客代碼

}

LPM3_EXIT;//退出中斷后退出低功耗模式。若退出中斷后要保存低功耗模式,將本句屏蔽

}

/*****************************************************************************

USART0發送中斷函數

******************************************************************************/

#pragmavector=USART0TX_VECTOR

__interruptvoidUsart0Tx()

{

//如下填充顧客代碼

LPM3_EXIT;//退出中斷后退出低功耗模式。若退出中斷后要保存低功耗模式,將本句屏蔽

}

/*****************************************************************************

USART0接受中斷函數

******************************************************************************/

#pragmavector=USART0RX_VECTOR

__interruptvoidUsart0Rx()

{

//如下填充顧客代碼

LPM3_EXIT;//退出中斷后退出低功耗模式。若退出中斷后要保存低功耗模式,將本句屏蔽

}

/*****************************************************************************

看門狗定期器中斷函數

******************************************************************************/

#pragmavector=WDT_VECTOR

__interruptvoidWatchDog()

{

//如下填充顧客代碼

LPM3_EXIT;//退出中斷后退出低功耗模式。若退出中斷后要保存低功耗模式,將本句屏蔽

}

/*****************************************************************************

比較器A中斷函數

******************************************************************************/

#pragmavector=COMPARATORA_VECTOR

__interruptvoidComparatorA()

{

//如下填充顧客代碼

LPM3_EXIT;//退出中斷后退出低功耗模式。若退出中斷后要保存低功耗模式,將本句屏蔽

}

/*****************************************************************************

定期器B中斷函數

多中斷源:CC1~6TB

******************************************************************************/

#pragmavector=TIMERB1_VECTOR

__interruptvoidTimerB1()

{

//如下為參照解決程序,不使用旳中斷源應當刪除

switch(__even_in_range(TBIV,14))

{

case2:

//捕獲/比較1中斷

//如下填充顧客代碼

break;

case4:

//捕獲/比較2中斷

//如下填充顧客代碼

break;

case6:

//捕獲/比較3中斷

//如下填充顧客代碼

break;

case8:

//捕獲/比較4中斷

//如下填充顧客代碼

break;

case10:

//捕獲/比較5中斷

//如下填充顧客代碼

break;

case12:

//捕獲/比較6中斷

//如下填充顧客代碼

break;

case14:

//TBIFG定期器溢出中斷

//如下填充顧客代碼

break;

}

LPM3_EXIT;//退出中斷后退出低功耗模式。若退出中斷后要保存低功耗模式,將本句屏蔽

}

/*****************************************************************************

定期器B中斷函數

中斷源:CC0

******************************************************************************/

#pragmavector=TIMERB0_VECTOR

__interruptvoidTimerB0()

{

溫馨提示

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

評論

0/150

提交評論