上一主题下一主题
关键字
主题 : 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> tMU10=d  
#include<msp430f149.h> &{WEtaXaa  
#include"intrinsics.h" ;>>:7rdYt  
#define CPU_F ((double)8000000)                                     //晶振8MHZ M{u7Ef  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 2.j0pg .  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 tIBEja^l  
#define uchar unsigned char <.lN'i;(  
#define uint  unsigned int jMR9E@>~E  
#define ulong unsigned long 26zif  
//串口 R. ryy  
#define baud           9600                                //设置波特率的大小 zYPvpZV/  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 `+KLE(]vyH  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 ou|3%&*"  
#define baud_l         (uchar)(baud_setting)               //低位 T8T,G4Q  
@ *T8>  
void shizhong_int()//XT2 8MHZ w+%p4VkA<r  
{ :/Y4I)'  
uchar i; |SJ%Myy  
BCSCTL1 &=~XT2OFF;      //XT2高速晶振****启 tUfze9m  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; | ~D~#Nz  
JK XIxw>q  
do 'HvW&~i(  
{ OH+2)X  
    IFG1&=~OFIFG;                   //清楚振荡器错误标志 +(q r{G?  
    for(i=0;i<100;i++) 6l>016 x  
     //  _NOP(); OJcI0(G  
        ; q=BAYZ \`  
  } Zq}Cl'f  
  while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 Me,AE^pgL'  
  IFG1&=~OFIFG; '(($dT  
} t9 id^  
V SH64  
void UART_Init()     //串口0设置 zpxy X|  
{ Zf\It<zT5  
  U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 xaSiG  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 ##NowO  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, I1Gk^wO  
  U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N na4^RPtN\e  
  U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 vi.q]$ohbV  
  U0MCTL=0x00;                //微调寄存器为0,波特率9600bps >\!>CuU  
  ME1|=UTXE0;                 //UART1发送使能 5HbPS%^.  
  ME1|=URXE0;                 //UART1接****使能 ;V~~lcD&Y`  
  U0CTL&=~SWRST; TH}+'m  
  IE1|=URXIE0;                //接****中断使能位 o{QPW  
G|]39/OO3{  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 ] i\a[3  
  P3DIR|= BIT4;               //设置IO口方向为输出 9=^4p=1J  
  P3SEL|= BIT5; {?'c|\n Li  
} *8QGv6*vQ  
//发送数据 ~rU{Q>c  
void send_tbyte(uchar data) d5B96;3  
{ 5/{gY{  
while((IFG1&UTXIFG0)==0); cvf#^Cu   
U0TXBUF = data; GwVSRI:[N  
} cS1BB#N0  
/* *[_>d.i  
* main.c ;yH1vX  
*/ U~8 oE_+  
6|:]2S  
#pragma vector = UART0RX_VECTOR bMw)> 4  
interrupt void UART0_RX_ISR(void) &ExYul  
{ Q:B:  
  uchar data=0; pb5 '5X+  
  data=U0RXBUF;                       //接****到的数据存起来 f)+fdc  
  send_tbyte(data);                    //将接****到的数据再发送出去 =w!14@W  
} aTy&"  
/* .sDVBT'%  
#pragma vector = UART0RX_VECTOR =2eG j'}  
interrupt void UART0_TX_ISR(void) .ZrQ{~t  
{ r'q9N  
; ^25[%aJI  
} @kLpK  
*/ ukSi9| 1-,  
void main(void) { lLT;V2=osX  
    WDTCTL = WDTPW | WDTHOLD;    // Stop watchdog timer  :RW0<  
    shizhong_int(); i=<N4Vx  
    UART_Init(); YDyi6x,  
    _EINT(); (k..ll p~  
    while(1) *qE[Y0Cd  
    { HBL)_c{/O  
        ;//send_tbyte(0x32); |!)3[<.  
    } k]"Rg2>%  
T%xB|^lf  
警告:#2580-D pragma vector = accepts number 0%^m  
是在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 Xe\v6gbD  
m3(p7Z^Bq  
#include <msp430.h> #7YJ87<E  
#include<msp430f149.h> SoFl]^l  
#include"intrinsics.h" I,Jb_)H&t  
#define CPU_F ((double)8000000)                                     //晶振8MHZ <a+ @4d;  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 _0ZBG(  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 UQP>yuSx  
#define uchar unsigned char d\c)cgh%  
#define uint  unsigned int .jbxA2  
#define ulong unsigned long /z}b1m+  
//串口 :/"5x  
#define baud           9600                                //设置波特率的大小  X]W(  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 00r7trZW^  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 e;|$nw-  
#define baud_l         (uchar)(baud_setting)               //低位 *.T?#H  
Q/h-Kh mz  
void shizhong_int()//XT2 8MHZ :FmH=pI!=  
{ &xt GabNk  
uchar i; E},zB*5TH  
BCSCTL1 &=~XT2OFF;   //XT2高速晶振****启 ]8'PLsS9<w  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; _S-@|9\&#  
'C>sYSL  
  do "];@N!dA  
  { rP!GS _RG  
     IFG1&=~OFIFG;                   //清楚振荡器错误标志 Tgbq4xR(  
    for(i=0;i<100;i++) Y|tK19  
      //  _NOP(); cHOC>|  
      ; bUYjmb2g)  
   } V"}Jsr  
   while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 K7nyQGS  
  IFG1&=~OFIFG; m4'jTC$  
} dI!/H&`B]  
MGr e_=Dm_  
void UART_Init() //串口0设置 -_O j iQ R  
{ ;&O *KhLH  
   U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 2n-kJl`: O  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 *D9H3M[o#  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, +m/n~-6q  
   U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N de TD|R  
   U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 $~ %h4   
   U0MCTL=0x00;                //微调寄存器为0,波特率9600bps ]I zD`  
   ME1|=UTXE0;                 //UART1发送使能 S.<4t *,  
  ME1|=URXE0;                 //UART1接****使能 n.C5w8f  
  U0CTL&=~SWRST; [8 H:5 Ho  
   IE1|=URXIE0;                //接****中断使能位 f/iM I)J  
(Q8r2*L  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 >[~7fxjK-  
  P3DIR|= BIT4;               //设置IO口方向为输出 @YG-LEh  
  P3SEL|= BIT5; < $otBC/%  
} 8%xBSob{j  
//发送数据 6E9/ z   
void send_tbyte(uchar data) n+i=Ff  
{ ,H^!G\  
while((IFG1&UTXIFG0)==0); *v?kp>O  
U0TXBUF = data; Gzg3{fXl  
} ]0j_yX   
/* LIQ].VxIs  
  * main.c  X>P|-n#  
  */ yf4L0.  
j-DWz>x  
#pragma vector = UART0RX_VECTOR EbVva{;#$;  
interrupt void UART0_RX_ISR(void) 3d olrW  
{ G#^0Bh&  
   uchar data=0; bSz7?NAp  
   data=U0RXBUF;                       //接****到的数据存起来 lBAu@M  
  send_tbyte(data);                    //将接****到的数据再发送出去 a60rJ#GD  
} s f->8  
/* J_-fs#[x  
#pragma vector = UART0RX_VECTOR 4RYH^9;>K  
interrupt void UART0_TX_ISR(void) r\Yh'cRW{  
{ CjP<'0gT  
; ^NR f  
} Au}l^&,zN  
*/ _L$a[zH  
void main(void) { FF! PmfF'  
     WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer ,]W|"NUI  
     shizhong_int(); xIC@$GP  
     UART_Init(); :."oWqb)  
     _EINT(); k+ w Ji  
     while(1) o[i N/  
     { & d2 `{H  
      ;//send_tbyte(0x32); '%XYJ r:H[  
     }
最佳答案奖励: (+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