上一主题下一主题
关键字
主题 : 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> lR]FQnZ  
#include<msp430f149.h> Q8$;##hzt  
#include"intrinsics.h" SIc~cZ!Yu  
#define CPU_F ((double)8000000)                                     //晶振8MHZ U\M9 sTqo  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 t]?{"O1rC  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 }{Ra5-PY  
#define uchar unsigned char kO$n0y5e  
#define uint  unsigned int `7[!bCl  
#define ulong unsigned long m c{W\ H  
//串口 ,Z} ST|$u  
#define baud           9600                                //设置波特率的大小 m; L 3c(r.  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 *kcc]*6@s  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 WZ h_z^rwn  
#define baud_l         (uchar)(baud_setting)               //低位 L!,@_   
nq~fH(QY  
void shizhong_int()//XT2 8MHZ Ex skd}  
{ 9<3fH J?vq  
uchar i; hMUUnr"8;i  
BCSCTL1 &=~XT2OFF;      //XT2高速晶振****启 34nfL: y  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; +;M 5Sp  
m9+?>/R  
do k!'+7 K.  
{ >y(loMl  
    IFG1&=~OFIFG;                   //清楚振荡器错误标志 y O,Jgn  
    for(i=0;i<100;i++) uh\Tf5  
     //  _NOP(); oJ`=ob4WDo  
        ; {3kz\F S  
  } H4j1yD(d  
  while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 }X/YMgJ  
  IFG1&=~OFIFG; S.q0L  
} b#R$P]dr=  
62y:i  
void UART_Init()     //串口0设置 a'. 7)f[g}  
{ S\Le;,5Z  
  U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 ] @#wR  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 LsaX HI/?b  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, zmL VFGnS  
  U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N %[M0TE=J  
  U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 {9.UeVz  
  U0MCTL=0x00;                //微调寄存器为0,波特率9600bps S8v?H|rm  
  ME1|=UTXE0;                 //UART1发送使能 ;Krb/qr4_  
  ME1|=URXE0;                 //UART1接****使能 7J ?s&x  
  U0CTL&=~SWRST; c h((u(G  
  IE1|=URXIE0;                //接****中断使能位 67Qu<9}<-  
m^3j|'mG  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 jb{9W7;RL  
  P3DIR|= BIT4;               //设置IO口方向为输出 5 6.JB BZZ  
  P3SEL|= BIT5; mH4u@aQ}  
} @)vQ>R\k<  
//发送数据 \8s:I+[HH  
void send_tbyte(uchar data) cAot+N+9|]  
{ \ym^~ Q|  
while((IFG1&UTXIFG0)==0); .Dl ?a>I  
U0TXBUF = data; j3T)gFP  
} !.q 9:|oc  
/* 4cM0f,nc+  
* main.c ^cSfkBh  
*/ UnYb}rF#%  
(v|<" tv  
#pragma vector = UART0RX_VECTOR 3dLqlJ^7B  
interrupt void UART0_RX_ISR(void) s/s&d pT*  
{ _)!*,\*`{  
  uchar data=0; =T&<z_L  
  data=U0RXBUF;                       //接****到的数据存起来 9y;}B y  
  send_tbyte(data);                    //将接****到的数据再发送出去 '@h  
} _z{9V7n4  
/* q5-i=lw  
#pragma vector = UART0RX_VECTOR !Ko>   
interrupt void UART0_TX_ISR(void) w?^[*_Y  
{ "kBVHy  
; Z f<T`'_d  
} T4"D&~3 3q  
*/ S-Vj$asv!  
void main(void) { 8F`8=L NO  
    WDTCTL = WDTPW | WDTHOLD;    // Stop watchdog timer W} H~ka  
    shizhong_int(); ag47$9(  
    UART_Init(); 3W_7xLA  
    _EINT(); `XK\', }F  
    while(1) j|K;Yi  
    { HF_8661g  
        ;//send_tbyte(0x32); " M?dU^U^  
    } PuGs%{$(h  
H)gc"aRe;Y  
警告:#2580-D pragma vector = accepts number YW/ V}C'>  
是在CCS5.5编译的,结果中断不运行,求大神帮帮忙
此帖悬赏结束
最佳答案: 1 学点
最佳答案获得者: 慕容紫英
级别: 北风资深工程师


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

C/C++ code "`[4(j  
F/df!I~  
#include <msp430.h> %6:"tuA  
#include<msp430f149.h> th{Ib@o  
#include"intrinsics.h" #!4 HSBf  
#define CPU_F ((double)8000000)                                     //晶振8MHZ 7q#R,\  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 #/hXcF  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时  '^,|8A2  
#define uchar unsigned char !Bhs8eGr3  
#define uint  unsigned int -{$L`{|G  
#define ulong unsigned long 9t&m\J >8;  
//串口 Qf}}/k|)k  
#define baud           9600                                //设置波特率的大小 QnIF{TS=  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 ):5H,B+Vr&  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 ]%h|ox0  
#define baud_l         (uchar)(baud_setting)               //低位 uCf _O~  
l9{.~]V  
void shizhong_int()//XT2 8MHZ YH0utc  
{ s { 0c .M  
uchar i; |'Ksy{lA  
BCSCTL1 &=~XT2OFF;   //XT2高速晶振****启 Twk,R. O  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; 6" GHVFB  
hoZM;wC  
  do Yj*!t1qm  
  { VCvFCyAz  
     IFG1&=~OFIFG;                   //清楚振荡器错误标志 jd}-&DN  
    for(i=0;i<100;i++) JcW<<7R  
      //  _NOP(); g6;a2  
      ; u 9kh@0  
   } z_t%n<OvK  
   while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 e]3b0`E  
  IFG1&=~OFIFG; |SwW*C  
} !u=A9i!  
aHSl_[  
void UART_Init() //串口0设置 7DW HADr  
{ bA(-7l?  
   U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 ,qK3 3Bn  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 y"Jma`Vjq  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, [D<"qT^*z6  
   U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N !)LVZfQ0  
   U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 71OQ?fc  
   U0MCTL=0x00;                //微调寄存器为0,波特率9600bps ^,6c9Dxy  
   ME1|=UTXE0;                 //UART1发送使能 CP6xyXOlPB  
  ME1|=URXE0;                 //UART1接****使能 "D7wtpJ  
  U0CTL&=~SWRST; "4/J4'-   
   IE1|=URXIE0;                //接****中断使能位 ;&ypvKG  
'XW9+jj)/  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 2~)r,.,  
  P3DIR|= BIT4;               //设置IO口方向为输出 ,p9 >/)l  
  P3SEL|= BIT5; C=<PYkt,L  
} H.*aVb$  
//发送数据 +`l)W`zX  
void send_tbyte(uchar data) o$KW*aDp  
{ aW;DfH  
while((IFG1&UTXIFG0)==0); @agxu-Y  
U0TXBUF = data; zL/r V<  
} ECr}7R%  
/* HAdDr!/`  
  * main.c :L5k#E "u  
  */ 2su/I  
4)NbQ[  
#pragma vector = UART0RX_VECTOR Vl%UT@D|  
interrupt void UART0_RX_ISR(void) f7oJ6'K  
{ s|9[=JMG  
   uchar data=0; {Xv0=P  
   data=U0RXBUF;                       //接****到的数据存起来 Rh#QPYPq  
  send_tbyte(data);                    //将接****到的数据再发送出去 Fb\ E39  
} nUf0TkA  
/* ^:Fj+d  
#pragma vector = UART0RX_VECTOR f:KZP;/[c  
interrupt void UART0_TX_ISR(void) QyD(@MFxb  
{ k]9+/ $  
; rBZ0Fx$ /[  
} sny$[!)  
*/ PM`iqn)@  
void main(void) { usR+ZQaA  
     WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer "2z&9`VIY  
     shizhong_int(); _ @OS,A  
     UART_Init(); AwWo,Y399h  
     _EINT(); rk &ME#<r  
     while(1) iCtS<"@Yx  
     { ;*njS 1@  
      ;//send_tbyte(0x32); rVZlv3  
     }
最佳答案奖励: (+1) 学点
级别: 北风工程师


UID: 474139
精华: 0
发帖: 548
威望: 1152 点
学点: 750 点
贡献: 0 点
好评: 0 点
学币: 0 个
注册时间: 2014-07-13
最后登录: 2014-08-25
板凳(2楼)  发表于: 2014-08-06 19:13||

不识别: UART0RX_VECTOR,可我没写错啊
级别: 北风工程师

UID: 474135
精华: 0
发帖: 543
威望: 1108 点
学点: 666 点
贡献: 0 点
好评: 0 点
学币: 0 个
注册时间: 2014-07-13
最后登录: 2014-08-25
地板(3楼)  发表于: 2014-08-06 19:14||

有没有可能是CCS设置上,MCU的选型选得不对,不支持那个accepts number