上一主题下一主题
关键字
主题 : 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> !}Cd_tj6  
#include<msp430f149.h> KS1Z&~4  
#include"intrinsics.h" *w59BO&M4  
#define CPU_F ((double)8000000)                                     //晶振8MHZ *#+XfOtF  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 q 9yY%  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 avykg(  
#define uchar unsigned char u0#q) L8  
#define uint  unsigned int P0 DvZV8  
#define ulong unsigned long TR5"K{WDx  
//串口 X@5!I+u\L  
#define baud           9600                                //设置波特率的大小 W!2(Ph*  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 92bvmP*o4  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 *pyi;  
#define baud_l         (uchar)(baud_setting)               //低位 e ,k,L  
O:q 0-  
void shizhong_int()//XT2 8MHZ G?8LYg!-  
{ `\(F ax  
uchar i; N3TkRJZ  
BCSCTL1 &=~XT2OFF;      //XT2高速晶振****启 z#SBt`c  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; %=S~[&8C  
uK="#1z cC  
do a7)q^;:O  
{ uw&GXOzew9  
    IFG1&=~OFIFG;                   //清楚振荡器错误标志 /J<?2T9G  
    for(i=0;i<100;i++) >mgbs>  
     //  _NOP(); {Fta4D_1N  
        ; Gc<Jx|Q7  
  } kZBIXW,G  
  while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 w6'o<=  
  IFG1&=~OFIFG; h3h2 KqM'  
} #^" \WG7{  
Xl.h&x0? 8  
void UART_Init()     //串口0设置 #%il+3J  
{ tMad 2,:  
  U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 C=t:0.:PJ  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 $h`?l$jC(@  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, p)(mF"\8=  
  U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N gz;().{  
  U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 [9u/x%f(  
  U0MCTL=0x00;                //微调寄存器为0,波特率9600bps n6ETWjP  
  ME1|=UTXE0;                 //UART1发送使能 JR<#el  
  ME1|=URXE0;                 //UART1接****使能 gEcVQPD@  
  U0CTL&=~SWRST; L~cswG'K  
  IE1|=URXIE0;                //接****中断使能位 0cC5  
5H1SC8+B,  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 ~Us1F=i_Q  
  P3DIR|= BIT4;               //设置IO口方向为输出 +*WE<4"!6  
  P3SEL|= BIT5; VjS %!P  
} |{k;p fPV  
//发送数据 N{IY \/;\  
void send_tbyte(uchar data) w;vp X>  
{ L}ud+Wfox  
while((IFG1&UTXIFG0)==0); nchhNU  
U0TXBUF = data; w1F7gd  
} B08q/ qi  
/* @I2m4Q{O  
* main.c /7De .O~H  
*/ e,>L&9] ZI  
Sdz!J 1  
#pragma vector = UART0RX_VECTOR + V4BJ/H  
interrupt void UART0_RX_ISR(void) 7=N=J<]pl  
{ udX4SBq-pC  
  uchar data=0; `9B xDp]I  
  data=U0RXBUF;                       //接****到的数据存起来 k2sb#]-/}  
  send_tbyte(data);                    //将接****到的数据再发送出去 9aD6mp  
} @Ytsb!!  
/* HdGAE1eU]}  
#pragma vector = UART0RX_VECTOR "Nj(0&  
interrupt void UART0_TX_ISR(void) L;I .6<K.  
{ b{)9 ?%_  
; "tBdz V  
} 8)&yj Y  
*/ zNuiB LxDs  
void main(void) { BoG/Hd.S  
    WDTCTL = WDTPW | WDTHOLD;    // Stop watchdog timer .!RBh LH_g  
    shizhong_int(); Wxkk^J9F3  
    UART_Init(); 1eZ">,F6<  
    _EINT(); %+|k>?&z7  
    while(1) x~!B.4gT2  
    { "Y }f"X|  
        ;//send_tbyte(0x32); LTG#nM0  
    } @4^5C-  
9~I\Wj B "  
警告:#2580-D pragma vector = accepts number +2O('}t  
是在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 } 'xGip@W  
V0m1>{  
#include <msp430.h> @F(er  
#include<msp430f149.h> T_2'=7  
#include"intrinsics.h" j%3 $ytf|p  
#define CPU_F ((double)8000000)                                     //晶振8MHZ u,iiS4'Ze  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 XsJ`x  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 /Z*$k{qIR&  
#define uchar unsigned char ;p*L(8<YI  
#define uint  unsigned int 6 [XaIco=C  
#define ulong unsigned long qU6!vgM&  
//串口 hoBFC1  
#define baud           9600                                //设置波特率的大小 wT+60X'  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 ?z M   
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 +,"[0RH  
#define baud_l         (uchar)(baud_setting)               //低位 J6EzD\.Y)  
D_<B^3w )  
void shizhong_int()//XT2 8MHZ M.5F|7  
{ YRZw|H{>t  
uchar i; pHVDug3  
BCSCTL1 &=~XT2OFF;   //XT2高速晶振****启 Ap\]v2G  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; 1G`5FU  
QP<P,Bi~  
  do |af<2(d  
  { N0lFx?4  
     IFG1&=~OFIFG;                   //清楚振荡器错误标志 vr47PM2al  
    for(i=0;i<100;i++) :/? Op  
      //  _NOP();  gHUW1E  
      ; oKSW:A  
   } ]lJ#|zd8o  
   while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 8_>:0(y  
  IFG1&=~OFIFG; A+Je?3/.  
} Vx0Hq`_14  
6"?#s/fk  
void UART_Init() //串口0设置 G@ybx[_[@  
{ T;3~teVYB  
   U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 )tV]h#4  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 xop\W4s_  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, gcX  
   U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N 'uUa|J1mu  
   U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 g+.E=Ef8<4  
   U0MCTL=0x00;                //微调寄存器为0,波特率9600bps $\4Or  
   ME1|=UTXE0;                 //UART1发送使能 t@cBuV`9c  
  ME1|=URXE0;                 //UART1接****使能 N9)ERW2`*  
  U0CTL&=~SWRST; ?aG~E  
   IE1|=URXIE0;                //接****中断使能位 *=E4|>Ul,  
&xlOsr/n  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 T?__  
  P3DIR|= BIT4;               //设置IO口方向为输出 b[;3y/X  
  P3SEL|= BIT5; GEb)nHQq  
} K e&fTK  
//发送数据 tK <)A)  
void send_tbyte(uchar data) N) z] F9Kg  
{ /_bM~g  
while((IFG1&UTXIFG0)==0);  -gS/  
U0TXBUF = data; } % |GV  
} P|)SXR  
/* b;|^62  
  * main.c p7O4CP>9[  
  */ ':] w  
M9S[{Jj*  
#pragma vector = UART0RX_VECTOR }KkH7XksF  
interrupt void UART0_RX_ISR(void) ?at~il$z'  
{ f.r-,%^6{  
   uchar data=0; l}c<eEfOy"  
   data=U0RXBUF;                       //接****到的数据存起来 d{GXFT;0  
  send_tbyte(data);                    //将接****到的数据再发送出去 z#*GPA8Em:  
} `Op ";E88  
/* eS Fmx  
#pragma vector = UART0RX_VECTOR q+G1#5  
interrupt void UART0_TX_ISR(void) bm7$DKp#  
{ ]X _&  
; g-(xuR^*  
} pV-.r-P  
*/ Cw^)}23R  
void main(void) { x[oYN9O  
     WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer "|&*MjwN6  
     shizhong_int(); 42Ffx?Qmv  
     UART_Init(); Em.?  
     _EINT(); >zhbipA  
     while(1) "Ii!)n,  
     { Vis?cuU/  
      ;//send_tbyte(0x32); u})JQ<|  
     }
最佳答案奖励: (+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