上一主题下一主题
关键字
主题 : 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> Myj 68_wf  
#include<msp430f149.h> i9NUv3#  
#include"intrinsics.h" k|^e=I   
#define CPU_F ((double)8000000)                                     //晶振8MHZ 2\Vzfca  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 [HKTXF{n  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 uHv9D%R  
#define uchar unsigned char p#~Dq(Q  
#define uint  unsigned int zF6]2Y?k%  
#define ulong unsigned long wX_s./#JJ  
//串口 [,I o!O  
#define baud           9600                                //设置波特率的大小 BnLM;5 >  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 Wb_'X |"u  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 }4!R 2c  
#define baud_l         (uchar)(baud_setting)               //低位 HbRDa  
s/,wyxKd  
void shizhong_int()//XT2 8MHZ [f'V pId8  
{ Jv*(DFt!v  
uchar i; M>pcG.6V  
BCSCTL1 &=~XT2OFF;      //XT2高速晶振****启 <_S>-;by  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; <$^76=x,8P  
p*T`fOL  
do =AhXEu^  
{ z9k3@\ 7  
    IFG1&=~OFIFG;                   //清楚振荡器错误标志 T9@W,0#  
    for(i=0;i<100;i++) r>=)Y32Q  
     //  _NOP(); ~ >af"<  
        ; BcMgfa/  
  } e5!LbsJv  
  while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 - I$qe Xy  
  IFG1&=~OFIFG; 1 rr\l`  
} m"{D}(TA  
H1]An'qz,  
void UART_Init()     //串口0设置 O<&8 gk~  
{ *(%]|z}]m  
  U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 'n7 )()"2  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 LRqBP|bjCD  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, 6dG:3n}  
  U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N KaJCfu yp  
  U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 p#VA-RSUQ|  
  U0MCTL=0x00;                //微调寄存器为0,波特率9600bps J1waiOh  
  ME1|=UTXE0;                 //UART1发送使能 V^a] @GK:  
  ME1|=URXE0;                 //UART1接****使能 qRXb 9c  
  U0CTL&=~SWRST; vJheM*C  
  IE1|=URXIE0;                //接****中断使能位 vZ Hm'  
: Gp,d*M  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 NuLyu=.?  
  P3DIR|= BIT4;               //设置IO口方向为输出 <1H bjR w  
  P3SEL|= BIT5; Sga/i?!  
} L'dR;T[;  
//发送数据 (x{6N^J.t  
void send_tbyte(uchar data) mHqw,28}  
{ 5]/i[T_  
while((IFG1&UTXIFG0)==0); jY>BU&  
U0TXBUF = data; GXV<fc"1  
}  #K8kz  
/* "r6DZi(^K  
* main.c I`?6>Z+%)  
*/ sLGut7@Sg  
`K.2&6xc  
#pragma vector = UART0RX_VECTOR 0XCtw6  
interrupt void UART0_RX_ISR(void) 'eNcQJh  
{ ('qu#.'  
  uchar data=0; S]kY'(V(*  
  data=U0RXBUF;                       //接****到的数据存起来 nE!h&}(  
  send_tbyte(data);                    //将接****到的数据再发送出去 iw!kV  
} xFU*,Y  
/* kY8aK8M  
#pragma vector = UART0RX_VECTOR |Co ?uv i  
interrupt void UART0_TX_ISR(void) W0 n/B &C  
{ o ]UG*2  
; -!OFt}  
} [whX),3>  
*/ ={[s)G  
void main(void) { %#!`>S)O  
    WDTCTL = WDTPW | WDTHOLD;    // Stop watchdog timer W 7k\j&x  
    shizhong_int(); KLpe!8tAe  
    UART_Init(); mM| 313  
    _EINT(); 3snr-)   
    while(1) 6I0G.N  
    { =-XI)JV#  
        ;//send_tbyte(0x32); P4x Q:$2!  
    } ?lg  
 `Pa)H  
警告:#2580-D pragma vector = accepts number W\V'o Vt  
是在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 v]VIUVd  
IH>+P]+3"3  
#include <msp430.h> xFg=Tyq:  
#include<msp430f149.h> lV]l`$ XI  
#include"intrinsics.h" i]Kq  
#define CPU_F ((double)8000000)                                     //晶振8MHZ v`wP db  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 '7Te{^<FQ$  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 F!fxA#  
#define uchar unsigned char 3c9v~5og4  
#define uint  unsigned int CuuHRvU8  
#define ulong unsigned long QQC0uta`  
//串口 B"+Ygvxb  
#define baud           9600                                //设置波特率的大小 dr9I+c7u  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 l l&iMj]  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 F+hsIsQ  
#define baud_l         (uchar)(baud_setting)               //低位 [;|g2\  
PicO3m  
void shizhong_int()//XT2 8MHZ uX.Aq@j  
{ ^~(bm$4r  
uchar i; u=ENf1{ $>  
BCSCTL1 &=~XT2OFF;   //XT2高速晶振****启 c!kbHZ<Z  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; jRgv 8n  
.' X$SF`  
  do <Xl G:nmY  
  { H2k>E}`  
     IFG1&=~OFIFG;                   //清楚振荡器错误标志 k U3] eh\I  
    for(i=0;i<100;i++) ,{E'k+  
      //  _NOP(); T \0e8"iZ  
      ; oO= 6Kd+T  
   } Q@d X2  
   while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 3FNj~=N  
  IFG1&=~OFIFG; &<!I]:Y  
} V]vk9M2q[l  
B'~.>, fg  
void UART_Init() //串口0设置 ?dxhe7m  
{ } ]g>PY  
   U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 m4 4aK qw)  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 QV?\?9(  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, hP 9+|am%  
   U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N [=LQ,e$r7  
   U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 9KAXc(-  
   U0MCTL=0x00;                //微调寄存器为0,波特率9600bps E; RI.6y  
   ME1|=UTXE0;                 //UART1发送使能 @x{;a9y  
  ME1|=URXE0;                 //UART1接****使能 M%$zor  
  U0CTL&=~SWRST;  Y9PG  
   IE1|=URXIE0;                //接****中断使能位 ["@K~my~D*  
 wl9E  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 u 4)i7  
  P3DIR|= BIT4;               //设置IO口方向为输出 N'[^n,\(:  
  P3SEL|= BIT5; V$:v~*Y9  
} <Pf W  
//发送数据 T_B$  
void send_tbyte(uchar data) m _:ib}  
{ ~~yo& ]  
while((IFG1&UTXIFG0)==0); vk[Km[(U'  
U0TXBUF = data; Bd\p!f<  
} MNJ$/l)h  
/* g{a_{P  
  * main.c tSQ>P -O  
  */ u1>|2D  
tWc!!Hf2j  
#pragma vector = UART0RX_VECTOR meIY00   
interrupt void UART0_RX_ISR(void) *4r;H2%c  
{ ((  t8  
   uchar data=0; BQw#PXp3  
   data=U0RXBUF;                       //接****到的数据存起来 iL5+Uf)E3  
  send_tbyte(data);                    //将接****到的数据再发送出去 'f5,%e2#  
} }0f[x ?V  
/* WH'[~O  
#pragma vector = UART0RX_VECTOR j_ :4_zdBy  
interrupt void UART0_TX_ISR(void) uW MAXGL  
{ rGq~e|.O3  
; srC'!I=s>8  
} *+ Q,b^N  
*/ iyj&O"  
void main(void) { "CLd_H*)c  
     WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer QEtZ]p1H@  
     shizhong_int(); ea7v:#O[S  
     UART_Init(); ZM4q@O)/  
     _EINT(); 8HTV"60hTs  
     while(1) =zI eZ7  
     { FtY*I&  
      ;//send_tbyte(0x32); T_I"Tsv  
     }
最佳答案奖励: (+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