上一主题下一主题
关键字
主题 : 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> + R6X  
#include<msp430f149.h> OH`zeI,[*  
#include"intrinsics.h" RLex#j  
#define CPU_F ((double)8000000)                                     //晶振8MHZ 9ec ?L  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 P=}dR&gk'  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 A#']e8  
#define uchar unsigned char LtwfL^#  
#define uint  unsigned int wvisu\V  
#define ulong unsigned long 9Bpb?  
//串口 2A|mXWG}~  
#define baud           9600                                //设置波特率的大小 X! 6dg.n5  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 J*K=tA  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 6&<QjO  
#define baud_l         (uchar)(baud_setting)               //低位 %OHWGac"i  
yz,_\{}  
void shizhong_int()//XT2 8MHZ W\0u[IV.x  
{ ,>qtnwvlHP  
uchar i; 0iC5,  
BCSCTL1 &=~XT2OFF;      //XT2高速晶振****启 0FL'8!e<  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; (gE<`b  
[oBRH]9cq  
do 6NyUGGRq  
{ v; ewMiK@E  
    IFG1&=~OFIFG;                   //清楚振荡器错误标志 <2 kv/  
    for(i=0;i<100;i++) {=Ji2k0U'  
     //  _NOP(); fUis_?!  
        ; F@ pf._c  
  } FeZWS >N  
  while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 .L^j:2(L  
  IFG1&=~OFIFG; ldU ><xc2  
} wZCboQ ,  
8kd):gZKZ  
void UART_Init()     //串口0设置 KCbOO8cQS  
{ `tT7&*Os  
  U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 3qu?q D  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 iM9k!u FE  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, sm[zE /2b  
  U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N vd^Z^cpi p  
  U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 s)3CosU  
  U0MCTL=0x00;                //微调寄存器为0,波特率9600bps #/9Y}2G|]  
  ME1|=UTXE0;                 //UART1发送使能  .MDSP/s  
  ME1|=URXE0;                 //UART1接****使能 e{4e<hd  
  U0CTL&=~SWRST; # ax% n  
  IE1|=URXIE0;                //接****中断使能位 Yc )Dx3  
K'Wv$[~Dc  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 I_?R(V[9  
  P3DIR|= BIT4;               //设置IO口方向为输出 f2KH&j>~r  
  P3SEL|= BIT5;  D'D IC  
} is%ef  
//发送数据 %@aC5^Ovy+  
void send_tbyte(uchar data) #U3q +d+^  
{ }43qpJe8U  
while((IFG1&UTXIFG0)==0); 8{icY|:MTN  
U0TXBUF = data; }a UQ#x  
} ^*y 1Fn0  
/* tK+JmbB\  
* main.c (bNoe(<qU  
*/ u]9 #d^%V  
PbxQ \.  
#pragma vector = UART0RX_VECTOR 6>&(OV   
interrupt void UART0_RX_ISR(void) >wYmx4W>  
{ *cX i*7|=  
  uchar data=0; g^=Ruh+  
  data=U0RXBUF;                       //接****到的数据存起来 5YI6$ZdQ  
  send_tbyte(data);                    //将接****到的数据再发送出去 t!FC)iY  
} |Z o36@s  
/*  h y\iot  
#pragma vector = UART0RX_VECTOR gHXv mR"  
interrupt void UART0_TX_ISR(void) dgByl-8Q  
{ )#? K2E  
; 7a/ BS(kq<  
} i}|jHlv  
*/ 66MUrNW  
void main(void) { (v0Q.Q@ <  
    WDTCTL = WDTPW | WDTHOLD;    // Stop watchdog timer < jX5}@`z  
    shizhong_int(); 7~N4~KAUS  
    UART_Init(); 6pQo_l}  
    _EINT(); -" r4  
    while(1) X VH( zJ  
    {  Lo)T  
        ;//send_tbyte(0x32); Z;dR :|%)  
    } 4zOFu/l6R  
02:`Joy2D  
警告:#2580-D pragma vector = accepts number "{bc2# F  
是在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 8sIrG  
^V}R(gDu}s  
#include <msp430.h> grQnV' q  
#include<msp430f149.h> Q==v!"Gi|  
#include"intrinsics.h" Fd[h9 G  
#define CPU_F ((double)8000000)                                     //晶振8MHZ B~>cNj<  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 &ZE\ @Vc  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 cIr1"5POXK  
#define uchar unsigned char &^IcL!t[  
#define uint  unsigned int b#g {`E  
#define ulong unsigned long dPx<Dz;  
//串口 }E5#X R  
#define baud           9600                                //设置波特率的大小 U+;>S$  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 2Nn1-wdhb  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 y5/6nvH_6  
#define baud_l         (uchar)(baud_setting)               //低位 g6g$nY@Jm  
X B*}P  
void shizhong_int()//XT2 8MHZ |:9Ir^  
{ GzFE%< 9F  
uchar i; ?Hi}nsw  
BCSCTL1 &=~XT2OFF;   //XT2高速晶振****启 Q0cY/'>4  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; =#(0)p $EC  
Vd +Q:L  
  do *J_iXu|  
  { d9Z&qdxTKq  
     IFG1&=~OFIFG;                   //清楚振荡器错误标志 JA)o@[l F  
    for(i=0;i<100;i++) h}|6VJ@.  
      //  _NOP(); >`89N'lZBm  
      ; pDq#8*q+v  
   } PXosFz~  
   while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 j/9WOIfa  
  IFG1&=~OFIFG; A)Qh  
} SFn 3$ rh  
@Y UY9+D&  
void UART_Init() //串口0设置 4;C*Fa  
{ PW%1xHLfk  
   U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 ivzAlwP  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 +2DE/wE]e+  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, q_T] 9d  
   U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N lwOf)jK:J  
   U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 _BV`,`8}  
   U0MCTL=0x00;                //微调寄存器为0,波特率9600bps [?chK^8  
   ME1|=UTXE0;                 //UART1发送使能 e&QS#k  
  ME1|=URXE0;                 //UART1接****使能 rH_Jh}Y  
  U0CTL&=~SWRST; `c"4PU^  
   IE1|=URXIE0;                //接****中断使能位 (=1q!c`  
)N(9pnyZH  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 B0oxCc/'sZ  
  P3DIR|= BIT4;               //设置IO口方向为输出 M$Fth*q{GD  
  P3SEL|= BIT5; e?V,fzg  
} V+lRi"m?|  
//发送数据 qy_%~c87  
void send_tbyte(uchar data) ?7 #7 :  
{ 2sKG(^=Z  
while((IFG1&UTXIFG0)==0); akT|Y4KxD  
U0TXBUF = data; D_d|=i  
} *URdd,){i  
/* lv4(4 $T  
  * main.c %}C9  
  */ W h| L  
SIq1X'7  
#pragma vector = UART0RX_VECTOR +W 9]ED  
interrupt void UART0_RX_ISR(void) {j?7d; 'j  
{ nv"G;W  
   uchar data=0; Dl%?OG<  
   data=U0RXBUF;                       //接****到的数据存起来 M% @  
  send_tbyte(data);                    //将接****到的数据再发送出去 R<_?W#$j  
} 0q{[\51*  
/* OX+hZ<y  
#pragma vector = UART0RX_VECTOR *g1L$FBG  
interrupt void UART0_TX_ISR(void) }W$8M>l  
{ W,3zL.qH"  
; #{x5L^v>]  
} XA1f' Kk  
*/ -#aZF2z   
void main(void) { LeSHRoD  
     WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer :u o[&&c  
     shizhong_int(); :.$"kXm^  
     UART_Init(); S[mM4et|  
     _EINT(); R:/ha(+  
     while(1) j0FW8!!-g  
     { xc;DdK=1X  
      ;//send_tbyte(0x32); T C8`JU=wV  
     }
最佳答案奖励: (+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