上一主题下一主题
关键字
主题 : 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> [4sEVu}  
#include<msp430f149.h> 3jjMY  
#include"intrinsics.h" f-Jbs`(+  
#define CPU_F ((double)8000000)                                     //晶振8MHZ E<>*(x/\e  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 x2co>.i  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 JK]R*! {n  
#define uchar unsigned char !\FkG8  
#define uint  unsigned int tF*szf|$-  
#define ulong unsigned long @@@=}!<H=  
//串口 hfqqQ!,l!  
#define baud           9600                                //设置波特率的大小 W+Xz$j/u  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 Z:*@5  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 sV/l5]b]  
#define baud_l         (uchar)(baud_setting)               //低位 .f:n\eT):  
\8S ~c8Z~  
void shizhong_int()//XT2 8MHZ ~gE:-  
{ eujK4s  
uchar i; FdzNE  
BCSCTL1 &=~XT2OFF;      //XT2高速晶振****启 |F[=b'?  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; .1yT*+`  
-`b8T0?oK  
do  x}TS  
{ [kV;[c}  
    IFG1&=~OFIFG;                   //清楚振荡器错误标志 0* ;O?T  
    for(i=0;i<100;i++) ~1 ~Xfo>  
     //  _NOP(); yF13Of^l./  
        ; 0nJE/JZ  
  } ^03j8Pc-c  
  while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 +k\Uf*wh  
  IFG1&=~OFIFG; #3$\Iu  
} 5%zXAQD=<  
\f:z+F!6R  
void UART_Init()     //串口0设置 vI1i, x#i  
{ %FZ2xyI.  
  U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 ^qGb%! l  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 ,Lpixnm]  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, '1?\/,em  
  U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N j.e0;! (L}  
  U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 }t9.N`xu  
  U0MCTL=0x00;                //微调寄存器为0,波特率9600bps DdQ;Q5|  
  ME1|=UTXE0;                 //UART1发送使能 Q=mI 9   
  ME1|=URXE0;                 //UART1接****使能 j/`94'Y  
  U0CTL&=~SWRST; H}hFFI)#Oo  
  IE1|=URXIE0;                //接****中断使能位 #Z+i~t{e(  
pM;vH]|  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 7?j;7.i s(  
  P3DIR|= BIT4;               //设置IO口方向为输出 N;Dp~(1 J1  
  P3SEL|= BIT5; (jjTK'0[  
} v ^[39*8  
//发送数据 r ={c,i  
void send_tbyte(uchar data) f() FY<b  
{ ,.iRnR  
while((IFG1&UTXIFG0)==0); I V%zO+  
U0TXBUF = data; 9. 'h^#C  
} }En  
/* **9x?s  
* main.c *B`Zq)   
*/ O[tvR:Nh  
1b=lpw 1}  
#pragma vector = UART0RX_VECTOR )?_#gLrE6  
interrupt void UART0_RX_ISR(void) O~j> ?  
{ JB!:JML  
  uchar data=0; R_M?dEtE>  
  data=U0RXBUF;                       //接****到的数据存起来 ^ ,m< 9  
  send_tbyte(data);                    //将接****到的数据再发送出去 ~ wg:!VWA)  
} 8.F~k~srA  
/* HhO".GA  
#pragma vector = UART0RX_VECTOR :0Z^uuk`gq  
interrupt void UART0_TX_ISR(void) g^*<f8 ~d  
{ z/i+EE  
; d%l{V6  
} 8DP+W$  
*/ *s@Qtgu  
void main(void) { $w"$r$K9K  
    WDTCTL = WDTPW | WDTHOLD;    // Stop watchdog timer G)?9.t_Lj-  
    shizhong_int(); [O: !(G je  
    UART_Init(); '_|h6<.k[  
    _EINT(); 9UvXC)R1  
    while(1) N0#JOu}~  
    { Da"j E  
        ;//send_tbyte(0x32); cwGbSW$t  
    } B"%{i-v>**  
!^Q.VYY  
警告:#2580-D pragma vector = accepts number K~ ;45Z2  
是在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 gYmO4/c,  
.P ??N  
#include <msp430.h> [Y^h)k{-$  
#include<msp430f149.h> STPRC&7;  
#include"intrinsics.h" lLU8eHf\  
#define CPU_F ((double)8000000)                                     //晶振8MHZ cV4Y= &  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 ao@CPB6N  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 8cuI-Swz  
#define uchar unsigned char zqp>Xw  
#define uint  unsigned int 9d!mGnl  
#define ulong unsigned long WDt6{5T  
//串口 t8*NldC  
#define baud           9600                                //设置波特率的大小 !mUO/6Q hq  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 t~8H~%T>v  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 M6].V*k'2  
#define baud_l         (uchar)(baud_setting)               //低位 /+m2|Ij(  
%pf9Yd0t  
void shizhong_int()//XT2 8MHZ j@{dsS: 6  
{ g1Osd7\o  
uchar i; 'c3'eJ0  
BCSCTL1 &=~XT2OFF;   //XT2高速晶振****启 Q&/WVR D  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; YoWXHg!U  
#G=AD /z  
  do V~do6[(  
  { 5 gb:,+  
     IFG1&=~OFIFG;                   //清楚振荡器错误标志 #)O^aac29  
    for(i=0;i<100;i++) pX1Us+%  
      //  _NOP(); FW{K[km^P  
      ; l \|sHn/  
   } Np/vPaAk  
   while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 (*AJ6BQWa  
  IFG1&=~OFIFG; _/Ay$l;F  
} A8Km8"  
d1'= \PYr  
void UART_Init() //串口0设置 |I{3~+E h  
{ pWP1$;8   
   U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 z#GSt ZT  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 eBY/Y6R  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, X-J85b_e  
   U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N ukRmjHbLf  
   U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 Bx6,U4o*  
   U0MCTL=0x00;                //微调寄存器为0,波特率9600bps $RUK<JN$6  
   ME1|=UTXE0;                 //UART1发送使能 m_,Jbf  
  ME1|=URXE0;                 //UART1接****使能 hTmJ ~m'J  
  U0CTL&=~SWRST; $xcZ{C  
   IE1|=URXIE0;                //接****中断使能位 .tQ(q=#  
^YB2E*  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 $`lm]} {&  
  P3DIR|= BIT4;               //设置IO口方向为输出 B]6Lbp"oo  
  P3SEL|= BIT5; o2q-x2uB  
} tmoaa!yRnT  
//发送数据 %s^1de  
void send_tbyte(uchar data) u|6-[I  
{ &xGpbJG  
while((IFG1&UTXIFG0)==0); ?<Lm58p8  
U0TXBUF = data; 5(E&jKn&  
} 4^ U%` 1  
/* =6'bGC%c  
  * main.c 'hV(1Mw  
  */ Ajo IL  
xq=!1>  
#pragma vector = UART0RX_VECTOR 0Ub'=`]5a  
interrupt void UART0_RX_ISR(void) S\Le;,5Z  
{ =1'WZp}D5  
   uchar data=0; 99CK [G  
   data=U0RXBUF;                       //接****到的数据存起来 'cQ,;y  
  send_tbyte(data);                    //将接****到的数据再发送出去 ?~E"!  
} '>n&3`r5  
/* -Dy<B  
#pragma vector = UART0RX_VECTOR S8v?H|rm  
interrupt void UART0_TX_ISR(void) MI(;0   
{ ,v#n\LD`  
; ]<L~f~vU  
} iA[o;D#  
*/ ^u1Nbo  
void main(void) { x$D^Bh,  
     WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer T?6<1nU)  
     shizhong_int(); *+2_!=4V  
     UART_Init(); 2oRwDg&7|  
     _EINT(); r>TOJVT&]  
     while(1) uOy/c 8`  
     { 'mTY56Yq  
      ;//send_tbyte(0x32); 8oXp8CC  
     }
最佳答案奖励: (+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