上一主题下一主题
关键字
主题 : msp430f149串口通信中断程序警告问题
级别: 北风工程师

UID: 474133
精华: 0
发帖: 541
威望: 1194 点
学点: 844 点
贡献: 0 点
好评: 0 点
学币: 0 个
注册时间: 2014-07-13
最后登录: 2014-09-01
楼主  发表于: 2014-08-06 19:12||

msp430f149串口通信中断程序警告问题

#include <msp430.h> 3K2B7loD)~  
#include<msp430f149.h> >KPxksFR8  
#include"intrinsics.h" }q<p;4<\F  
#define CPU_F ((double)8000000)                                     //晶振8MHZ "Y%fk/v8  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 <v&L90+s\;  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 X:N`x  
#define uchar unsigned char 4= 7#=F1  
#define uint  unsigned int _}bs0 kIz  
#define ulong unsigned long <{ZDD]UGs0  
//串口 /!7    
#define baud           9600                                //设置波特率的大小 N>pTl$\4  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 #:B14E  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 vIq>QXb;d  
#define baud_l         (uchar)(baud_setting)               //低位 {ef9ov Xk  
[ TX1\*W  
void shizhong_int()//XT2 8MHZ p!oO}gE  
{ o#Gf7.E8  
uchar i; \wjT|z1+Y  
BCSCTL1 &=~XT2OFF;      //XT2高速晶振****启 SEKR`2Zz,  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; As{Q9o5j/  
wI5(`_l{G  
do FhP$R}F  
{ =I.uf   
    IFG1&=~OFIFG;                   //清楚振荡器错误标志 FOyANN'  
    for(i=0;i<100;i++) O#_\@f#[  
     //  _NOP(); *w#^`yeo  
        ; @ ^q}.u`  
  } m2a [ E0  
  while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 i}L*PCP  
  IFG1&=~OFIFG; :Z[|B(U  
} ~hxW3e  
M7fPaJKL  
void UART_Init()     //串口0设置 %jo,Gv  
{ cd&sAK"  
  U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 %$<v:eMAs  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 -]Ny-[P  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, #[&9~za'"m  
  U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N e>UU/Ks  
  U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 2"QcjFW%  
  U0MCTL=0x00;                //微调寄存器为0,波特率9600bps %0zp`'3Y  
  ME1|=UTXE0;                 //UART1发送使能 pK"iTc#\X  
  ME1|=URXE0;                 //UART1接****使能 E#E&z(G2  
  U0CTL&=~SWRST; Y%!k'\n[2  
  IE1|=URXIE0;                //接****中断使能位 Jz]OWb *  
q8)w Al  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 "H9q%S,FH  
  P3DIR|= BIT4;               //设置IO口方向为输出 u}?|d8$h\  
  P3SEL|= BIT5; q26 qY5D  
} oT!i}TW?o  
//发送数据 $T_>WUiK  
void send_tbyte(uchar data) sVH w\_F$  
{ ~uG/F?= Q:  
while((IFG1&UTXIFG0)==0); qN^]`M[ BY  
U0TXBUF = data; JF'<""  
} gX`C76P!  
/* ~"Su2{"8B  
* main.c j>5X^Jd  
*/ EgRuB@lw76  
KvjH\;78  
#pragma vector = UART0RX_VECTOR +E+I.}sOB  
interrupt void UART0_RX_ISR(void) id)J;!^;J  
{ E?jb?  
  uchar data=0; Mn*5oH  
  data=U0RXBUF;                       //接****到的数据存起来 o}Zl/&(  
  send_tbyte(data);                    //将接****到的数据再发送出去 %1M!4**W  
} "R[6Q ^vw  
/* N8Un42  
#pragma vector = UART0RX_VECTOR <7oZV^nd *  
interrupt void UART0_TX_ISR(void) o2^?D`Jr  
{ ?Q6ZZQ~  
; &_Z8:5e  
} 9|hPl-. .W  
*/ 7P D D  
void main(void) { Ec['k&*7,  
    WDTCTL = WDTPW | WDTHOLD;    // Stop watchdog timer Mp^U)S+  
    shizhong_int(); l5_%Q+E_  
    UART_Init(); 7h.:XlUm|  
    _EINT(); XXZ$^W&  
    while(1) i{ 2rQy+  
    { XJf1LGT5  
        ;//send_tbyte(0x32); .g6(07TyV  
    } jz$83TB-  
,_yf5 a  
警告:#2580-D pragma vector = accepts number wB W]w  
是在CCS5.5编译的,结果中断不运行,求大神帮帮忙
此帖悬赏结束
最佳答案: 1 学点
最佳答案获得者: 慕容紫英
级别: 北风资深工程师


UID: 472421
精华: 0
发帖: 1405
威望: 1631 点
学点: 64 点
贡献: 23 点
好评: 0 点
学币: 95 个
注册时间: 2014-07-09
最后登录: 2018-07-09
沙发(1楼)  发表于: 2014-08-06 19:14||

C/C++ code r(uo-/7z  
=RD>#'sUK  
#include <msp430.h> J( XDwt  
#include<msp430f149.h> + c3pe4  
#include"intrinsics.h" JN+7o h]u  
#define CPU_F ((double)8000000)                                     //晶振8MHZ U\:Y*Ai  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 IJ2'  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 3lZl  
#define uchar unsigned char 3w"JzC@  
#define uint  unsigned int O{~Xp!QQt  
#define ulong unsigned long K=JDl-#!  
//串口 ?rQ .nN  
#define baud           9600                                //设置波特率的大小 -_5Dk'R#`  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 '#3F Eo  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 ! "qT2< A  
#define baud_l         (uchar)(baud_setting)               //低位 1q-;+Pd;  
99ZWB  
void shizhong_int()//XT2 8MHZ 1-? i *C  
{ bH/4f93Nb  
uchar i; r1-MO`6  
BCSCTL1 &=~XT2OFF;   //XT2高速晶振****启 vkhPE(f  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; -+1O*L!  
hDB(y4/  
  do LJPJENtFIs  
  { NN'pBU R  
     IFG1&=~OFIFG;                   //清楚振荡器错误标志 W7uX   
    for(i=0;i<100;i++) pu/5#[MC)^  
      //  _NOP(); ux1(>  
      ; mm +V*L{x  
   } j3-o}6  
   while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 V? tH/P  
  IFG1&=~OFIFG; qqZ4K:oC,  
} ,}'8. f  
W+Mw:,>*s  
void UART_Init() //串口0设置 f?/OV*  
{ S`5bcxI_  
   U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 ?sd Si--  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 Mo N/?VA  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, hR|xUp  
   U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N | 8mWR=9fs  
   U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 - JEPh!oTt  
   U0MCTL=0x00;                //微调寄存器为0,波特率9600bps Q`8-|(ng