上一主题下一主题
关键字
主题 : 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> 6ey{+8  
#include<msp430f149.h> $M5iU@A  
#include"intrinsics.h" J$F 1sy  
#define CPU_F ((double)8000000)                                     //晶振8MHZ h6Ovl  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 Q'5]E{1<'n  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 J~Uq'1?  
#define uchar unsigned char RL4J{4K  
#define uint  unsigned int X [IVK~D}z  
#define ulong unsigned long ,P  ~jO  
//串口 p{ X?_F  
#define baud           9600                                //设置波特率的大小  UCV1{  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 tAF#kBa\y_  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 N!!=9'fGF  
#define baud_l         (uchar)(baud_setting)               //低位 xs,,)jF(u  
zW#P ~zS  
void shizhong_int()//XT2 8MHZ ^x2zMB\t  
{ 0RFBun{  
uchar i; =D;n#n7  
BCSCTL1 &=~XT2OFF;      //XT2高速晶振****启 Fi)(~ji:  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; W%@r   
>|zMN$:  
do sE^ee2]OI@  
{ *!oV?N[eA'  
    IFG1&=~OFIFG;                   //清楚振荡器错误标志 Fz11/sKz  
    for(i=0;i<100;i++) V#X#rDfJZ  
     //  _NOP(); boS=  
        ; /_SQKpic  
  } QL]e<2oPJ  
  while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 e dTFk$0  
  IFG1&=~OFIFG; *Xcqnu('  
} JAx0(MZO  
IJ]rVty  
void UART_Init()     //串口0设置 .Ht;xq  
{ {x{~%)-  
  U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 p0rmcP1Ln  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 -w"$[XP  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, .^dtdFZ8,  
  U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N `=V p 0tPI  
  U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 iD*21c<kd  
  U0MCTL=0x00;                //微调寄存器为0,波特率9600bps qxB|*P `  
  ME1|=UTXE0;                 //UART1发送使能 OUq%d8 W  
  ME1|=URXE0;                 //UART1接****使能 W_L*S4 ~  
  U0CTL&=~SWRST; B"YN+So  
  IE1|=URXIE0;                //接****中断使能位 ,eGguNA9  
!(Ymc_s  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 x<h|$$4S  
  P3DIR|= BIT4;               //设置IO口方向为输出 E{0e5.{  
  P3SEL|= BIT5; <2d)4@B=  
} _\=x A6!  
//发送数据 B}S+/V` Y5  
void send_tbyte(uchar data) @F] w]d  
{ hraR:l D  
while((IFG1&UTXIFG0)==0); g$ HL::  
U0TXBUF = data; tm/=Oc1p  
} t>Ye*eR*`U  
/* 4[i 3ckFT,  
* main.c ;vneeW4|  
*/ wo+`WnDh  
tA^+RO4  
#pragma vector = UART0RX_VECTOR Z^]jy>dj  
interrupt void UART0_RX_ISR(void) v-N4&9)%9  
{ e/cHH3 4  
  uchar data=0; Y(t /=3c[  
  data=U0RXBUF;                       //接****到的数据存起来 CuK>1_Dq  
  send_tbyte(data);                    //将接****到的数据再发送出去 Oe x   
} z Ohv>a  
/* w>8HS+  
#pragma vector = UART0RX_VECTOR 2<9K}Of  
interrupt void UART0_TX_ISR(void) $3B%4#s  
{ VQ,5&-9Y3  
; _h4]gZ  
} .71ZeLv*  
*/ ZV:df 6S  
void main(void) { .?rs5[th*  
    WDTCTL = WDTPW | WDTHOLD;    // Stop watchdog timer p+<qI~  
    shizhong_int(); ,"5HJA4  
    UART_Init(); :-#7j} R&  
    _EINT(); MM]0}65KG  
    while(1) [L7s(Zs>  
    { 8\9W:D@"x  
        ;//send_tbyte(0x32); bDIhI}P  
    } "9d Z z/{  
k>Fw2!mA^  
警告:#2580-D pragma vector = accepts number ern\QAhXX  
是在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 C(t/:?(y  
!)=o,sVA  
#include <msp430.h> @gc"-V*-/  
#include<msp430f149.h> 4o3GS8  
#include"intrinsics.h" fLAF/#\2  
#define CPU_F ((double)8000000)                                     //晶振8MHZ 4;||g@f'[  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 fna>>  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 o{p_s0IX;S  
#define uchar unsigned char h'p0V@!N  
#define uint  unsigned int ]r6bJ 2  
#define ulong unsigned long W\7*T1TDj  
//串口 KoJG! Rm  
#define baud           9600                                //设置波特率的大小 F948%?a  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 }i:'f 2/  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 G6 5N:  
#define baud_l         (uchar)(baud_setting)               //低位 "S:N- Tf%U  
~x:] ch|  
void shizhong_int()//XT2 8MHZ sIsu >eL  
{ ".?{Y(~  
uchar i; I:<R@V<~#  
BCSCTL1 &=~XT2OFF;   //XT2高速晶振****启 I/jr` 3Mj  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; /g''-yT7#  
zP}v2  
  do K3DJ"NJ<Ji  
  { C:MGi7f  
     IFG1&=~OFIFG;                   //清楚振荡器错误标志 Ai18]QD-  
    for(i=0;i<100;i++) qI*1+R}  
      //  _NOP(); d A{Jk  
      ; %)Dd{|c  
   } (t$/G3E  
   while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 0f/!|c  
  IFG1&=~OFIFG; uTGvXKL7  
} [)>8z8'f  
}9 2lr87  
void UART_Init() //串口0设置 JSK5x(GlH  
{ D ;$+]2  
   U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 )%w8>1 }c  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 G!%XQ\a!  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, .fY<"2g  
   U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N }p?V5Qp  
   U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 eh4"_t  
   U0MCTL=0x00;                //微调寄存器为0,波特率9600bps _4B iF?1  
   ME1|=UTXE0;                 //UART1发送使能 }A/&]1GWk  
  ME1|=URXE0;                 //UART1接****使能 y7EX&  
  U0CTL&=~SWRST; 'xoE [0!  
   IE1|=URXIE0;                //接****中断使能位 ULmdt   
W;]U P$5l  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 00a<(sS;  
  P3DIR|= BIT4;               //设置IO口方向为输出 KVpAV$|e  
  P3SEL|= BIT5; E/$@ud|l"  
} P3ev 4DL  
//发送数据 X]U"ru{1q  
void send_tbyte(uchar data) /M*\t.[ 46  
{ @ZR4%A"X4  
while((IFG1&UTXIFG0)==0); A<X :K nl  
U0TXBUF = data; o+Ti$`2<O7  
} 4m[C-NB!g  
/* Hs -.83V  
  * main.c (g2r\hI  
  */  zn;Hs]G  
Z6([/n  
#pragma vector = UART0RX_VECTOR SO Q-D4q  
interrupt void UART0_RX_ISR(void) gXLZ)>+A+  
{ f(s3TLM  
   uchar data=0; bo!]  
   data=U0RXBUF;                       //接****到的数据存起来 qb&N S4#  
  send_tbyte(data);                    //将接****到的数据再发送出去 \R>5F\ 0  
} m#'rI=}!  
/* 2T(, H.O  
#pragma vector = UART0RX_VECTOR 0H&U=9'YT  
interrupt void UART0_TX_ISR(void) 9eN2)a/  
{ Z0 IxYEp  
; pM'IQ3N  
} $aPHl  
*/ s!;VUr\  
void main(void) { +V+*7s%fL  
     WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer kl3S~gE4@  
     shizhong_int(); xAd>",=~  
     UART_Init(); EfBVu  
     _EINT(); 'UvS3]bSYW  
     while(1) &c<}++'h  
     { +`s&i%{1>  
      ;//send_tbyte(0x32); + 65~,e  
     }
最佳答案奖励: (+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