上一主题下一主题
关键字
主题 : 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> shC;hR&;  
#include<msp430f149.h> ^>&k]T`  
#include"intrinsics.h" q z&+=d@  
#define CPU_F ((double)8000000)                                     //晶振8MHZ m4w ') r~  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 t@oK~ Nr  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 w FtN+  
#define uchar unsigned char oP?YA-#nc  
#define uint  unsigned int yoe}$f4  
#define ulong unsigned long r`\A nT?  
//串口 iTo k[uJ}  
#define baud           9600                                //设置波特率的大小 *ZSdl 0e  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 2(!fg4#+  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 # Doq P:  
#define baud_l         (uchar)(baud_setting)               //低位 O09ke-lC  
/ jTT5  
void shizhong_int()//XT2 8MHZ :c[n\)U[aa  
{ `\Ku]6J]5  
uchar i; t=euE{c  
BCSCTL1 &=~XT2OFF;      //XT2高速晶振****启 4pU>x$3$  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; &fP XU*l4  
Z(0@1l`Z-`  
do :VmHfOO  
{ =ziwxIo6  
    IFG1&=~OFIFG;                   //清楚振荡器错误标志 nQK|n^AU/  
    for(i=0;i<100;i++) E .6HpIx  
     //  _NOP(); "I- w  
        ; \[2lvft!  
  } >?W[PQ5yx  
  while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 xgsjm) )  
  IFG1&=~OFIFG; BfTc I)  
} *v%rMU7,  
ITuq/qts]A  
void UART_Init()     //串口0设置 donw(_=  
{ 6qvp*35Cx  
  U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 rd|uz4d  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 Ma-\^S=  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, ?|;yVew  
  U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N 72 TI  
  U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 =;~I_)Pg1  
  U0MCTL=0x00;                //微调寄存器为0,波特率9600bps 2h30\/xkU  
  ME1|=UTXE0;                 //UART1发送使能 Jc4L5*Xn/  
  ME1|=URXE0;                 //UART1接****使能 XV>JD/K2  
  U0CTL&=~SWRST; l?E a#  
  IE1|=URXIE0;                //接****中断使能位 <pLT'Y =  
^{@!['  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 =V+I=rqo  
  P3DIR|= BIT4;               //设置IO口方向为输出 !v#xb3"/  
  P3SEL|= BIT5; 8U2dcx:G3  
} )n7l'}o?+  
//发送数据 `RQ#.   
void send_tbyte(uchar data) 3cl9wWlJ_E  
{ yTM{|D]$(  
while((IFG1&UTXIFG0)==0); ?^Hf Np9  
U0TXBUF = data; )8gGv  
} 1-SVCk -  
/* "+"{+k5t  
* main.c 6Q|k7*,B  
*/ :y]Omp  
6V9doP]i  
#pragma vector = UART0RX_VECTOR ~K_Uq*dCE  
interrupt void UART0_RX_ISR(void) D8K-K]W@  
{ &UHPX?x  
  uchar data=0; EER`?Sa(  
  data=U0RXBUF;                       //接****到的数据存起来 1a0kfM$  
  send_tbyte(data);                    //将接****到的数据再发送出去 c2l_$p  
} mbl]>JsQD  
/* I 1d0iU  
#pragma vector = UART0RX_VECTOR fr6^nDY  
interrupt void UART0_TX_ISR(void) F^aR+m  
{ `WEZ"5n  
; BI[JATZG  
} aAvsb$  
*/ ;E2>Ovv  
void main(void) { D:\g,\Z  
    WDTCTL = WDTPW | WDTHOLD;    // Stop watchdog timer Myat{OF  
    shizhong_int(); Is<"OQ  
    UART_Init(); ]-o"}"3Ef  
    _EINT(); 1B>Vt*=  
    while(1) }!#gu3  
    { `L;eb a  
        ;//send_tbyte(0x32); \/7i-B]G7  
    } Ey{%XR+*;  
k#TYKft  
警告:#2580-D pragma vector = accepts number @xsP5je]  
是在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 <a@'Pcsk  
") Xy%C`J  
#include <msp430.h> 2=pVX  
#include<msp430f149.h> ^MPl wx  
#include"intrinsics.h" h#K863  
#define CPU_F ((double)8000000)                                     //晶振8MHZ 0) }bJ,5/  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 Ip}(!D|  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 PxENLQ3a=  
#define uchar unsigned char Q`#Y_N-h+  
#define uint  unsigned int !|P>%bi  
#define ulong unsigned long _9!_fIY  
//串口 m7z6c"?lB  
#define baud           9600                                //设置波特率的大小 _1w?nN'  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 Q>y2C8rnJ/  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 nKn,i$sO/.  
#define baud_l         (uchar)(baud_setting)               //低位 <5*cc8  
RFyeA. N  
void shizhong_int()//XT2 8MHZ ;Wjb}_V:_  
{ y"= j[.  
uchar i; 1-C 2Y `  
BCSCTL1 &=~XT2OFF;   //XT2高速晶振****启 d, j"8\@  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; \& 6  
|1`|E- S=  
  do uZ mi  
  { Q8.SD p  
     IFG1&=~OFIFG;                   //清楚振荡器错误标志 oy90|.]G  
    for(i=0;i<100;i++) >U@7xeK  
      //  _NOP(); /I~iUND"G  
      ; cPe0o'`[  
   } mq@2zE`.(  
   while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 @$ E&H`da  
  IFG1&=~OFIFG; qG.HJD  
} WlnmW(uahW  
{<7!=@j  
void UART_Init() //串口0设置 +o)o4l%3  
{ d[ql7  
   U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 !K;\{/8  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 Q jMH1S  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, xMI4*4y(  
   U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N w4Nm4To  
   U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 C Sx V^  
   U0MCTL=0x00;                //微调寄存器为0,波特率9600bps Gz;.?=&iF  
   ME1|=UTXE0;                 //UART1发送使能  ~0 <?^  
  ME1|=URXE0;                 //UART1接****使能 } y@pAeS,  
  U0CTL&=~SWRST; r(./00a  
   IE1|=URXIE0;                //接****中断使能位 ikf6Y$nWfF  
!kZ9Ox9^  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 a[iuE`  
  P3DIR|= BIT4;               //设置IO口方向为输出 Ht,_<zP;  
  P3SEL|= BIT5; _y{z%-  
} hmJ{'D1"  
//发送数据 0,*clvH\;  
void send_tbyte(uchar data) Hm@+(j(N96  
{ WT$m*I  
while((IFG1&UTXIFG0)==0); MJS4^*B\1  
U0TXBUF = data; `HXP*Bp#  
} r jfcZ@  
/* @D_=M tF<  
  * main.c ed$g=qs>  
  */ "X~ayn'@w,  
ZGrjb22M  
#pragma vector = UART0RX_VECTOR W,~s0a!  
interrupt void UART0_RX_ISR(void) u*u>F@C8  
{ >}{'{ Z &  
   uchar data=0; DIO @Zo  
   data=U0RXBUF;                       //接****到的数据存起来 )%'Lm  
  send_tbyte(data);                    //将接****到的数据再发送出去 ncS.~F  
} Z(LDA ZG  
/* =Ly7H7Q2  
#pragma vector = UART0RX_VECTOR Ek\f x*Lz  
interrupt void UART0_TX_ISR(void) F4+mkB:w*7  
{ |}zvCD  
; m[S6pqz  
} u=B_cA}:  
*/ fRKO> /OT  
void main(void) { -AwR$<q'  
     WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer Rt!G:hy7  
     shizhong_int(); /VB n  
     UART_Init(); IxC/X5Mp^q  
     _EINT(); seWYY $$  
     while(1) <4s$$Uw}6%  
     { #W`>vd}  
      ;//send_tbyte(0x32); 9hG)9X4  
     }
最佳答案奖励: (+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