上一主题下一主题
关键字
主题 : 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> M#]URS2h<O  
#include<msp430f149.h> 6~(iLtd#  
#include"intrinsics.h" o,y {fv:ki  
#define CPU_F ((double)8000000)                                     //晶振8MHZ E@ !~q  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 }2_ i<4,L  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 Fm.IRu<\`  
#define uchar unsigned char kv/mqKVr  
#define uint  unsigned int X=b]Whuv  
#define ulong unsigned long @$d_JwI  
//串口 N%+C5e<  
#define baud           9600                                //设置波特率的大小 0\^K\J ,.  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 'WQ<|(:{  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 ID v|i.q3  
#define baud_l         (uchar)(baud_setting)               //低位 B6a   
+aIy':P  
void shizhong_int()//XT2 8MHZ n<>/X_m  
{ O0#9D'{  
uchar i; 5oI gxy  
BCSCTL1 &=~XT2OFF;      //XT2高速晶振****启 f0lK ,U@P  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; MDKiwT@#  
O_w RI\ !  
do Lv?e[GA  
{ E#c ZM>  
    IFG1&=~OFIFG;                   //清楚振荡器错误标志 [ 6t!}q  
    for(i=0;i<100;i++) /WKp\r(Hp  
     //  _NOP(); _-g?6q  
        ; ,t_Fo-i7vI  
  } Arb-,[kwN  
  while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 b}#ay2AR  
  IFG1&=~OFIFG; m2$Qp{C6H  
} x,SzZ)l-9  
#/ Qe7:l  
void UART_Init()     //串口0设置 u ?n{r  
{ .)eX(2j\  
  U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 +b]+5!  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 0Bpix|mq  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, _n+./ B  
  U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N kdry a  
  U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 mT2Fn8yC1  
  U0MCTL=0x00;                //微调寄存器为0,波特率9600bps W=T}hA#`  
  ME1|=UTXE0;                 //UART1发送使能 _=eeZ4f  
  ME1|=URXE0;                 //UART1接****使能 #E( n  
  U0CTL&=~SWRST; &ii3Vlyzg  
  IE1|=URXIE0;                //接****中断使能位 M6b; DQ  
t~0}Emgp<(  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 c*g(R.!  
  P3DIR|= BIT4;               //设置IO口方向为输出 |H4/a;]~  
  P3SEL|= BIT5; =K)au$BE|  
} ei8OLcw:x  
//发送数据 [=Yfdh M8S  
void send_tbyte(uchar data) *?`:=  
{ i+V4_ `  
while((IFG1&UTXIFG0)==0); 5!PU+9Kh  
U0TXBUF = data; e_BOzN~c  
} @"m? #  
/* uz1t uX_  
* main.c h.6yI  
*/ 8L?35[]e  
@Ooh}V#J  
#pragma vector = UART0RX_VECTOR ; ,y9  
interrupt void UART0_RX_ISR(void) 4V7{5:oa  
{ #n'tpp~O  
  uchar data=0; U&6!2s-  
  data=U0RXBUF;                       //接****到的数据存起来 Xa2QtJq  
  send_tbyte(data);                    //将接****到的数据再发送出去 $zTjh~ 9  
} ESZ6<!S  
/* otXB:a  
#pragma vector = UART0RX_VECTOR uE>2 *u\  
interrupt void UART0_TX_ISR(void) 1@H3!V4  
{ h!f7/) |[o  
; _wg6}3  
} h{]l?6`  
*/ <dzE5]%\  
void main(void) { L!-@dz  
    WDTCTL = WDTPW | WDTHOLD;    // Stop watchdog timer \HDRr*KO  
    shizhong_int(); NwmO[pt+  
    UART_Init(); m?_S&/+*  
    _EINT(); }0T1* .Cz  
    while(1) Pb.-Z@  
    { x~}RL-Y2o  
        ;//send_tbyte(0x32); X;T(?,,  
    } }abM:O "Y  
"qb3\0O  
警告:#2580-D pragma vector = accepts number {vAq08  
是在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 Hl;p>>n  
'j_H{kQy  
#include <msp430.h> (UF!Zb]{  
#include<msp430f149.h> x+cF1 N2.  
#include"intrinsics.h" |T_Pz& -  
#define CPU_F ((double)8000000)                                     //晶振8MHZ m0Syxb  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 C._sgO  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时  +Rgw+o  
#define uchar unsigned char @;fE%N  
#define uint  unsigned int />Vx*^u8Hz  
#define ulong unsigned long ~ n^G<iXLp  
//串口 r^t{Ii ~  
#define baud           9600                                //设置波特率的大小 &fW=5'  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 Qc;[mxQe  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 uX +<`3O  
#define baud_l         (uchar)(baud_setting)               //低位 E`fssd~  
-FN6sNvIh  
void shizhong_int()//XT2 8MHZ ox_h9=$-  
{ :bRR(sP  
uchar i; L"h@`3o|  
BCSCTL1 &=~XT2OFF;   //XT2高速晶振****启 '$XHRS/q]  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; G}#/`]o!K  
En9]x"_  
  do h+3Z.WKhwP  
  { 4)HWPX  
     IFG1&=~OFIFG;                   //清楚振荡器错误标志 @JEmybu  
    for(i=0;i<100;i++) L4pjh&+8  
      //  _NOP(); M`P]cX)x  
      ; $Oe58  
   } $xtE+EV.p  
   while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待  'e>sHL  
  IFG1&=~OFIFG; \678Nx  
} zI&4k..4  
o9LD6$  
void UART_Init() //串口0设置 y)/$ge _U  
{ tnF9Vj[#%_  
   U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 zrU$SWU  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 3{4/7D cX  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, c =N]! ,MO  
   U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N ab aQJ|  
   U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 r.wIk0  
   U0MCTL=0x00;                //微调寄存器为0,波特率9600bps "h^#<b PN  
   ME1|=UTXE0;                 //UART1发送使能 v^],loi<V  
  ME1|=URXE0;                 //UART1接****使能 +Bq}>  
  U0CTL&=~SWRST; K-EI?6`xM  
   IE1|=URXIE0;                //接****中断使能位 8<-oJs_o+  
S`c]Fc  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 UI<PNQvo9  
  P3DIR|= BIT4;               //设置IO口方向为输出 2b4pOM7W  
  P3SEL|= BIT5; OgXZ-<'  
} UiK+c30FU  
//发送数据 %V%#y $l  
void send_tbyte(uchar data) c_G-R+  
{ 8q~FUJhU  
while((IFG1&UTXIFG0)==0); pl#o!j(i  
U0TXBUF = data; bmO__1  
} `F2*o47|t  
/* eY 4`k  
  * main.c /SCZ&  
  */ D){"fw+b  
[  t  
#pragma vector = UART0RX_VECTOR Vgqvvq<S  
interrupt void UART0_RX_ISR(void) O& 3r*vd  
{ nG},v%  
   uchar data=0; FU5LY XCs  
   data=U0RXBUF;                       //接****到的数据存起来 Lov.E3S6;  
  send_tbyte(data);                    //将接****到的数据再发送出去 AY&9JSu 6  
} Q+N7:o!;<b  
/* UU.mdSL  
#pragma vector = UART0RX_VECTOR Th~3mf #  
interrupt void UART0_TX_ISR(void) W>?f^C!+m  
{ =wIdC3Ph  
; r;cI}'  
} $_ix6z  
*/ [GR|$/(z=  
void main(void) { &h7smZO5j  
     WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer W( &Go'9e"  
     shizhong_int(); qXrt0s[  
     UART_Init(); 0NCOz(L/  
     _EINT(); ~{7zm"jN  
     while(1) 3R<ME c  
     { ,30FGz^i  
      ;//send_tbyte(0x32); &547`*  
     }
最佳答案奖励: (+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