上一主题下一主题
关键字
主题 : 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> \zioIfHm  
#include<msp430f149.h> b4%sOn,  
#include"intrinsics.h" xgV. <^  
#define CPU_F ((double)8000000)                                     //晶振8MHZ KhK:%1po  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 @-y.Y}k#$~  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 5tUp[/]pl  
#define uchar unsigned char ^PDz"L<*  
#define uint  unsigned int aOZSX3;wg  
#define ulong unsigned long +\~.cP7[  
//串口 Sx{vZS3  
#define baud           9600                                //设置波特率的大小 L{_Q%!h3]  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 6qfL-( G  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 NzB"u+jB  
#define baud_l         (uchar)(baud_setting)               //低位 ( <~  
bHx09F]  
void shizhong_int()//XT2 8MHZ 1&%6sZN  
{ G&qO{" Js  
uchar i; F*" "n  
BCSCTL1 &=~XT2OFF;      //XT2高速晶振****启 /'KCW_Q  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; QN`K|,}H^  
rqJ'm?>cr  
do T](N ^P  
{ Mrpz(})  
    IFG1&=~OFIFG;                   //清楚振荡器错误标志 pW{Q%"W  
    for(i=0;i<100;i++) L9(mY `d>"  
     //  _NOP(); 9i+OYWUO  
        ; LIzdP,^pc  
  } kw,eTB<;R  
  while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 kg0X2^#b  
  IFG1&=~OFIFG; KtTlc#*KU  
} p5RnFe l  
U$zd3a_(  
void UART_Init()     //串口0设置 =j,2  
{ `" BFvF#  
  U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 q [}<LU  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 b$7p`Ay  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, S87E$k  
  U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N ^qB a~  
  U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 Ag[Zs%X  
  U0MCTL=0x00;                //微调寄存器为0,波特率9600bps 2HA-q),6  
  ME1|=UTXE0;                 //UART1发送使能 dJYsn+  
  ME1|=URXE0;                 //UART1接****使能 A kMP)\Q  
  U0CTL&=~SWRST; H?]%b!gQG  
  IE1|=URXIE0;                //接****中断使能位 @4)NxdOE  
<Z b~tYp  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 !{u`}:\  
  P3DIR|= BIT4;               //设置IO口方向为输出 4gR;,%E\TO  
  P3SEL|= BIT5; &TgS$c5k  
} exW|c~|m{A  
//发送数据 V{A_\  
void send_tbyte(uchar data) :mYVHLmea  
{ azK7kM~  
while((IFG1&UTXIFG0)==0); 7~zd % o  
U0TXBUF = data; (5rfeSA^  
} \&!qw[;O  
/* Py@/\V  
* main.c 9~7s*3zI  
*/ )~X.x"}8k  
+,g3Xqs}X  
#pragma vector = UART0RX_VECTOR -- >q=hlA  
interrupt void UART0_RX_ISR(void) "26=@Q^Y  
{ #fGI#]SG?  
  uchar data=0; `erKHZ]S  
  data=U0RXBUF;                       //接****到的数据存起来 Y5fz_ [("  
  send_tbyte(data);                    //将接****到的数据再发送出去 @ajt D-_2  
} 5e Lm  
/* 3< 'bi}{  
#pragma vector = UART0RX_VECTOR `=Z3X(Kc  
interrupt void UART0_TX_ISR(void) {D$5M/$  
{ 7 /6 Zp?  
; =w5]o@  
} fxQ4kiI  
*/ >vPv 4e7&3  
void main(void) { g)mjw  
    WDTCTL = WDTPW | WDTHOLD;    // Stop watchdog timer *|4/XHi  
    shizhong_int(); p![UOI"W  
    UART_Init(); X,A]<$ACu%  
    _EINT(); :.P{}\/  
    while(1) 1/ 3<u::  
    { BUs={"Pa  
        ;//send_tbyte(0x32); Zmc"  
    } ZLZh$eZZ  
*x-@}WY$U  
警告:#2580-D pragma vector = accepts number : i{tqY%  
是在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 }b)?o@9}:  
@2YO_rL[  
#include <msp430.h> $v-lG(  
#include<msp430f149.h> 4y>G6TD^  
#include"intrinsics.h" kki]6_/n  
#define CPU_F ((double)8000000)                                     //晶振8MHZ T/-PSfbkj  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 w?oIKj  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 B 8C3LP}?  
#define uchar unsigned char +&(sZFW5o  
#define uint  unsigned int I/XVo2Ee  
#define ulong unsigned long $Snwx  
//串口 H# 2'\0u  
#define baud           9600                                //设置波特率的大小 l]oGhM;  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 <9\_b 6  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 <:q]t6]$  
#define baud_l         (uchar)(baud_setting)               //低位 6l:CDPhR  
khjW9Aa8t  
void shizhong_int()//XT2 8MHZ eHPGzN Xb  
{ [#lPT'l  
uchar i; @HIC i]  
BCSCTL1 &=~XT2OFF;   //XT2高速晶振****启 FIC 2)  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; WiPMvl8  
pO nZ7(  
  do +]5JXt^  
  { AHn^^'&x[  
     IFG1&=~OFIFG;                   //清楚振荡器错误标志 ={#r/x  
    for(i=0;i<100;i++) 4V43(G  
      //  _NOP(); `S$BBF;  
      ; 'hU&$lgMF  
   } Bk?MF6  
   while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 }KS[(Q  
  IFG1&=~OFIFG; 1xT^ ,e6  
} J]fjg%C2m  
Xps MgJ/w  
void UART_Init() //串口0设置 7v%~^l7:x  
{ R:^GNra;  
   U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 }1X,~y]  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 9FJU'$FN  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, |_!xA/_U'T  
   U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N h r*KDT^!  
   U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 ~3/>;[!  
   U0MCTL=0x00;                //微调寄存器为0,波特率9600bps lFI"U^xC  
   ME1|=UTXE0;                 //UART1发送使能 o6B!ikz 8  
  ME1|=URXE0;                 //UART1接****使能 P`V#Wj4\  
  U0CTL&=~SWRST; zx;x@";p  
   IE1|=URXIE0;                //接****中断使能位 tao3Xr^?  
VPtA %1  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 QJOP*<O  
  P3DIR|= BIT4;               //设置IO口方向为输出 >Pbd#*  
  P3SEL|= BIT5; }{]{ `\  
} Wm Od1  
//发送数据 <t]i' D(K  
void send_tbyte(uchar data) ]yCmGt+b  
{ hvZW~ =75  
while((IFG1&UTXIFG0)==0); }ndH |,  
U0TXBUF = data; NWX~@Rg  
} I?l*GO+pz  
/* ;'2y6"\Y  
  * main.c gt{ei)2 b  
  */ tEBf2|<  
.:_dS=ut  
#pragma vector = UART0RX_VECTOR F N(&3Ull  
interrupt void UART0_RX_ISR(void) DRf~l9f  
{ 4?72TBl]  
   uchar data=0; bF?EuL  
   data=U0RXBUF;                       //接****到的数据存起来 M(?|$$   
  send_tbyte(data);                    //将接****到的数据再发送出去 V,|9$A;  
} ?#slg8[  
/* &<.Z4GxS  
#pragma vector = UART0RX_VECTOR lKH"PH7*_w  
interrupt void UART0_TX_ISR(void) N|7 <*\o  
{ OXA_E/F  
; hMhD(X  
} b LSI\  
*/ +`.%aJIi9  
void main(void) { `C_#EU-  
     WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer {&w%3  
     shizhong_int(); "Z}0A/y  
     UART_Init(); XD%?'uUQ_  
     _EINT(); P{QRmEE  
     while(1)  v+G}n\F  
     { ~]c^v'k  
      ;//send_tbyte(0x32); W+Gu\=s%O  
     }
最佳答案奖励: (+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