上一主题下一主题
关键字
主题 : 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> zi 14]FWo  
#include<msp430f149.h> , &f20o  
#include"intrinsics.h" I8>1RXz  
#define CPU_F ((double)8000000)                                     //晶振8MHZ b#'a4j-u  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 t/BiZo|zl  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 '(:J|DN  
#define uchar unsigned char ?S7:KnU>K  
#define uint  unsigned int qq{N; C  
#define ulong unsigned long f6C+2L+Hr  
//串口 gV>\lMc[-%  
#define baud           9600                                //设置波特率的大小 EqU[mqeF  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 QI{Y@xQ  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 /[T8/7;_l  
#define baud_l         (uchar)(baud_setting)               //低位 *\+ 'tFT6  
D[y|y 3F  
void shizhong_int()//XT2 8MHZ F!t13%yeu?  
{ ~ ?_Z!eS  
uchar i; kpUU '7Q  
BCSCTL1 &=~XT2OFF;      //XT2高速晶振****启 ZDD|MH  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; X~4:sJ\P=  
2|o$eq3t  
do ?m^7O_1  
{ ';V+~pi  
    IFG1&=~OFIFG;                   //清楚振荡器错误标志 k&;L(D  
    for(i=0;i<100;i++) VqU:`?#"a  
     //  _NOP(); LA Vgf>  
        ; )ciHY6  
  } |0%UM}  
  while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 m$: a|'mS  
  IFG1&=~OFIFG; ) O^08]Y g  
} e5]0<s$  
kniMXeiu  
void UART_Init()     //串口0设置 pQ\ [F  
{ a5&j=3)|  
  U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 fs12<~+z  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 jO.E#Ei}~  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, #| Po&yu4R  
  U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N &|;!St]!M  
  U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 ( #Aq*2Z.  
  U0MCTL=0x00;                //微调寄存器为0,波特率9600bps =w>QG{-N  
  ME1|=UTXE0;                 //UART1发送使能 I@+<[n2  
  ME1|=URXE0;                 //UART1接****使能 M 4?3l  
  U0CTL&=~SWRST; y70gNPuTOD  
  IE1|=URXIE0;                //接****中断使能位 K; lC#  
p}z0(lQ*~  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 *?'T8yf^  
  P3DIR|= BIT4;               //设置IO口方向为输出 y}`%I&]n  
  P3SEL|= BIT5; +w5?{J  
} gk` .8o  
//发送数据 VG^-aR_F  
void send_tbyte(uchar data) wH<*  
{ RwKN  
while((IFG1&UTXIFG0)==0); \_'pUp22  
U0TXBUF = data; )9->]U@  
} 8hT>)WH}wo  
/* 56dl;Z)  
* main.c fok#D>q  
*/ -nSqB{s!SD  
WI3!?>d  
#pragma vector = UART0RX_VECTOR )]R8 $S  
interrupt void UART0_RX_ISR(void) R4;6Oi)  
{ G7?EaLsfQ  
  uchar data=0; z{x -Vfd  
  data=U0RXBUF;                       //接****到的数据存起来 7h~M&\M  
  send_tbyte(data);                    //将接****到的数据再发送出去 "{ lnSLk  
} ,-Gw#!0  
/* ".4^?d_^VF  
#pragma vector = UART0RX_VECTOR f*Bc`+G  
interrupt void UART0_TX_ISR(void) 6qf`P!7d]M  
{ z_TK (;j  
; \ZH=$c*W  
} v/ dcb%  
*/ m|[ Hhw=f  
void main(void) { |/$#G0X;H  
    WDTCTL = WDTPW | WDTHOLD;    // Stop watchdog timer kOO2 ?L|Z  
    shizhong_int(); ly@CX((W  
    UART_Init(); 7Jk.U=vY  
    _EINT(); }Of^Y@{q.  
    while(1) 3t'K@W?AJh  
    { #oI`j q  
        ;//send_tbyte(0x32); ovp>"VuC  
    } 8iRQPV-"_  
b`mEnI VIz  
警告:#2580-D pragma vector = accepts number XJ+sm^`vOf  
是在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 I_xX Dr  
ox%9Ph  
#include <msp430.h> `;>= '"O!\  
#include<msp430f149.h> x-?{E  
#include"intrinsics.h" %-<'QYYP  
#define CPU_F ((double)8000000)                                     //晶振8MHZ Clh!gpB c  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 R1& [S/  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 ap{2$k ,  
#define uchar unsigned char Er{#ziN+  
#define uint  unsigned int * 1Od-3  
#define ulong unsigned long 8Goh4T H  
//串口 Q",0F{'  
#define baud           9600                                //设置波特率的大小 cCa|YW^j  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 "R3d+p  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 =e8bNg  
#define baud_l         (uchar)(baud_setting)               //低位 X`fn8~5  
L~I hsiB  
void shizhong_int()//XT2 8MHZ 6$ Gep  
{ HO[wTB|D]  
uchar i; m+#iR}*1L  
BCSCTL1 &=~XT2OFF;   //XT2高速晶振****启 G 2mX ;  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; ei6AV1| p  
bd<m%OM""  
  do JB>b`W9   
  { A0fFv+RN3  
     IFG1&=~OFIFG;                   //清楚振荡器错误标志 $*kxTiG!7  
    for(i=0;i<100;i++) _>v<(7  
      //  _NOP(); !>>f(t4  
      ;  OX"j#  
   } >-O/U5<!  
   while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 xY$iz)^0&  
  IFG1&=~OFIFG; z8 [yt282  
} x3u4v~ "-  
<D::9c j  
void UART_Init() //串口0设置 n_ B"- n  
{ P9S2?Q  
   U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 aM{xdTYaU  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 BSkDpr1C  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, 5* 0y7K/D  
   U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N ZvUC I8  
   U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 fPrLM'  
   U0MCTL=0x00;                //微调寄存器为0,波特率9600bps ]>+PnP35G  
   ME1|=UTXE0;                 //UART1发送使能 i ,|0@Vy  
  ME1|=URXE0;                 //UART1接****使能 qY >{cjo  
  U0CTL&=~SWRST; !H2QjW  
   IE1|=URXIE0;                //接****中断使能位 yB3;  
KL ?@@7  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 8@PX7!9  
  P3DIR|= BIT4;               //设置IO口方向为输出 o}<4*qlI  
  P3SEL|= BIT5; NuYkz"O]  
} .cR -V`  
//发送数据 z Nl ,  
void send_tbyte(uchar data) J!5v~<v?-  
{ ) /v6l  
while((IFG1&UTXIFG0)==0); MCT'Nw@A  
U0TXBUF = data; [|lB5gi4t!  
} doB  
/* l$YC/ bP  
  * main.c fd#j Y}  
  */ (?H0+zws^  
& u!\<\  
#pragma vector = UART0RX_VECTOR /RyR>G!  
interrupt void UART0_RX_ISR(void) (D 9Su^:1  
{ @rHK( 25+d  
   uchar data=0; *A~ G_0B  
   data=U0RXBUF;                       //接****到的数据存起来 !sRngXCXk?  
  send_tbyte(data);                    //将接****到的数据再发送出去 ?\#N9 +{W  
} >OP+^^oZ<  
/* [j"9rO" +  
#pragma vector = UART0RX_VECTOR 9m-)Xdoy  
interrupt void UART0_TX_ISR(void) uK' &Dam  
{ (4@lKKiU%H  
; 8k^| G  
} gZEi]/8_  
*/ 5"/J^"!h  
void main(void) { IQ!\w-  
     WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer 3&x-}y~sg  
     shizhong_int(); .>(Q)"v  
     UART_Init(); KE1ao9H8wR  
     _EINT(); zh $}~RG[  
     while(1) 72 0)VzT  
     { 5qf BEPJ  
      ;//send_tbyte(0x32); o0ZM[0@j  
     }
最佳答案奖励: (+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