上一主题下一主题
关键字
主题 : 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> ~LuGfPO^  
#include<msp430f149.h> )J[m>tyY5  
#include"intrinsics.h" 7GO9z<m)  
#define CPU_F ((double)8000000)                                     //晶振8MHZ &za }TH m  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 PRU&y/zZmG  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 WJD2(el  
#define uchar unsigned char )YAa7\Od  
#define uint  unsigned int He=C\"  
#define ulong unsigned long qGA|.I9,  
//串口 ZR\N~.  
#define baud           9600                                //设置波特率的大小 +#eol~j9N  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 7y=O!?*  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 m FTuqujO  
#define baud_l         (uchar)(baud_setting)               //低位 Ef`'r))  
7"'RE95  
void shizhong_int()//XT2 8MHZ TnN yth wZ  
{ OdFF)-K >~  
uchar i; nod&^%O"  
BCSCTL1 &=~XT2OFF;      //XT2高速晶振****启 b,+Sa\j)(  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; C4(xtSJSd!  
b\0>uU  
do DujVV(+I  
{ R:f!ywj%  
    IFG1&=~OFIFG;                   //清楚振荡器错误标志 :"Xnu%1  
    for(i=0;i<100;i++) Zp/+F(  
     //  _NOP(); 2L&c91=wE  
        ; vSHPN|*  
  }  a[nSUlT&  
  while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 =;-C;gn:w  
  IFG1&=~OFIFG; d'W2I*Zc<  
} uMDd Zj&  
&j:e<{@  
void UART_Init()     //串口0设置 / ]8e[t>!f  
{ ntH`\ )xi  
  U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 Cdz?+hb  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 CaZc{  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, nx%As  
  U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N 2vpQ"e- A  
  U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 he~8V.$  
  U0MCTL=0x00;                //微调寄存器为0,波特率9600bps ]<<,{IQ  
  ME1|=UTXE0;                 //UART1发送使能 9KX% O-'  
  ME1|=URXE0;                 //UART1接****使能 L6CI9C;-b  
  U0CTL&=~SWRST; _b<;n|^  
  IE1|=URXIE0;                //接****中断使能位 A@>/PB6n  
,+df=> $W  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 )ItABl[{  
  P3DIR|= BIT4;               //设置IO口方向为输出 _OG9wi(Fpx  
  P3SEL|= BIT5; 02Vfg42  
} =l:V9u-I^  
//发送数据 a!bW^?PcK  
void send_tbyte(uchar data) *jhgCm  
{ zV}:~;w  
while((IFG1&UTXIFG0)==0); WA2NjxYz  
U0TXBUF = data; 2z{B  
} FNUs .d"  
/* ,oH\rrglf  
* main.c <eEIR  
*/ jywS<9 c@  
}IWt\a<d  
#pragma vector = UART0RX_VECTOR }< '6FxR  
interrupt void UART0_RX_ISR(void) j~Pw t9G  
{ &iWTf K7  
  uchar data=0; h;vY=r-  
  data=U0RXBUF;                       //接****到的数据存起来 !4Zy$69R  
  send_tbyte(data);                    //将接****到的数据再发送出去 b;D  
} h._eP.W`  
/* 3PvxU|*F  
#pragma vector = UART0RX_VECTOR H0&wn#);6R  
interrupt void UART0_TX_ISR(void) =c \(]xX  
{ kntY2FM  
; ^U,iDK_  
} R"XycXn_$  
*/ muXP5MO  
void main(void) { +x{o  
    WDTCTL = WDTPW | WDTHOLD;    // Stop watchdog timer gd D|'h  
    shizhong_int(); hN K wQ  
    UART_Init(); :Ni#XZ{F-/  
    _EINT(); D(Rr<-(  
    while(1) 4A"nm6  
    { jMBM qQNU  
        ;//send_tbyte(0x32); tvf.K+  
    } JAKs [@:  
sg-^ oy*^  
警告:#2580-D pragma vector = accepts number i 1w ]j  
是在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 <l<6W-I   
5.QY{ +k  
#include <msp430.h> %#E$wz  
#include<msp430f149.h> [I}xR(a@n  
#include"intrinsics.h" 'Ej+Jczzpp  
#define CPU_F ((double)8000000)                                     //晶振8MHZ bRK\Tua 6  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 0e(4+:0  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 =A(Az  
#define uchar unsigned char u=7 #_ZC9L  
#define uint  unsigned int #?'@?0<6  
#define ulong unsigned long 5. +_'bF|  
//串口 ^;wz+u4^l  
#define baud           9600                                //设置波特率的大小  7MQxW<0  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 !1Nh`FN  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 Cm9#FA  
#define baud_l         (uchar)(baud_setting)               //低位 5RyxVC0<  
>.-4CJ])d  
void shizhong_int()//XT2 8MHZ f9vitFkb+  
{ T9uOOI  
uchar i; <TgVU.*  
BCSCTL1 &=~XT2OFF;   //XT2高速晶振****启 A[m<xtm5K  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; 2x~Pq_?y  
8WC _CAP  
  do ?%$~Bb _  
  { AOe f1^S=  
     IFG1&=~OFIFG;                   //清楚振荡器错误标志 }yw>d\] f  
    for(i=0;i<100;i++) o $'K}U  
      //  _NOP(); ?RS4oJz,5g  
      ; L.8`5<ITw  
   } PW\me7iCz  
   while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 v>_83P`  
  IFG1&=~OFIFG; cUn>gT  
} oWEzzMRz  
B qLL]%F  
void UART_Init() //串口0设置 uZ'(fnZ$  
{ e$E>6Ngsr  
   U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 p-H}NQ\  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 a*uG^~ ).  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, ^ 4*#QtO  
   U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N y{ 2\T  
   U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 \"w+4}  
   U0MCTL=0x00;                //微调寄存器为0,波特率9600bps .yD5>iBh  
   ME1|=UTXE0;                 //UART1发送使能 G++<r7;x  
  ME1|=URXE0;                 //UART1接****使能 @U@O#+d'ZR  
  U0CTL&=~SWRST; 4BeHj~~  
   IE1|=URXIE0;                //接****中断使能位 N%%trlDXD  
_-2n tO<E  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式  M{SJ8+G  
  P3DIR|= BIT4;               //设置IO口方向为输出 A (H2Gt D  
  P3SEL|= BIT5; =`UFg > -  
} J P^\   
//发送数据 Gte\=0Wr  
void send_tbyte(uchar data) ,C|{_4  
{  cp0yr:~  
while((IFG1&UTXIFG0)==0); 5rmQ:8_5  
U0TXBUF = data; HZ1nuA  
} zGy+jeH:.  
/* ^E.mG>  
  * main.c 5.D0 1?k  
  */ 1 1(GCu  
HTMg{_r(%  
#pragma vector = UART0RX_VECTOR piqh7u3~  
interrupt void UART0_RX_ISR(void) {?"X\5 n0  
{ L-9;"]d~|  
   uchar data=0; T Qx<lw  
   data=U0RXBUF;                       //接****到的数据存起来 IZ87Px>zL  
  send_tbyte(data);                    //将接****到的数据再发送出去 ]2YC7  
} Ql9>i;AGV  
/* p.b#RY  
#pragma vector = UART0RX_VECTOR sB$ "mJ  
interrupt void UART0_TX_ISR(void) m(D-?mhL  
{ 5evk_f  
; 2%9L'-  
} _18Z]XtX  
*/ H9(UzyN>i  
void main(void) { lY2~{Y|4s  
     WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer 2%J] })  
     shizhong_int(); 06Q9X!xD  
     UART_Init(); 0)7v _|z  
     _EINT(); ?$uEN_1O\@  
     while(1) uH,/S4?X  
     { B-$zioZ  
      ;//send_tbyte(0x32); Gm\)1b  
     }
最佳答案奖励: (+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