上一主题下一主题
关键字
主题 : 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> -"J6 |Y#8  
#include<msp430f149.h> "-aak )7w  
#include"intrinsics.h" H U[a b  
#define CPU_F ((double)8000000)                                     //晶振8MHZ c)H (w  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 @oC # k<  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 08)X:@ w?  
#define uchar unsigned char F O"8B  
#define uint  unsigned int yn&AMq ]o  
#define ulong unsigned long Nxk3uF^  
//串口 L<'8#J[_5  
#define baud           9600                                //设置波特率的大小 En&bwLu:s  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 I5RV:e5b  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 DG_tmDT4  
#define baud_l         (uchar)(baud_setting)               //低位 q^{Z"ifL  
QuuR_Ao?c'  
void shizhong_int()//XT2 8MHZ rBB A`Ut@F  
{ mKWfRx*UdG  
uchar i; C)^FRnb  
BCSCTL1 &=~XT2OFF;      //XT2高速晶振****启 uP,{yna(  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; Izrf42 >k  
W}+f}/&l  
do f"XFf@!  
{ u Qy5t:!  
    IFG1&=~OFIFG;                   //清楚振荡器错误标志 -ya0!D  
    for(i=0;i<100;i++) C N9lK29F)  
     //  _NOP(); At5:X*vD  
        ; z-(#Mlq:!  
  } RusC5\BUX  
  while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 ]7WBoC8  
  IFG1&=~OFIFG; gI^);J rTE  
} *SkUkqP9z  
@\gTi;u/x  
void UART_Init()     //串口0设置 by*>w/@9)k  
{ jRz2l`~7#  
  U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 wv,,#P  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 )"7hyW5  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, MFHPh8P  
  U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N T-7'#uB.m  
  U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 jE)&`yZ5  
  U0MCTL=0x00;                //微调寄存器为0,波特率9600bps aubmA0 w  
  ME1|=UTXE0;                 //UART1发送使能 G~ZDXQ>5CP  
  ME1|=URXE0;                 //UART1接****使能 t+0&B"  
  U0CTL&=~SWRST; DQg:W |A  
  IE1|=URXIE0;                //接****中断使能位 p},6W,f  
od>DSn3 T  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 IY|;}mIF  
  P3DIR|= BIT4;               //设置IO口方向为输出 ]Jj\ **  
  P3SEL|= BIT5; 6y)xMX  
} "Kk3#  
//发送数据 -B2>~#L  
void send_tbyte(uchar data) }~lF Rf  
{ qs6yEuh#  
while((IFG1&UTXIFG0)==0); oS)0,p  
U0TXBUF = data; J'.:l}g!1  
} E0=-6j  
/* LGT\1u  
* main.c /LhAQpUQT5  
*/ L>{E8qv>w  
lj.z>  
#pragma vector = UART0RX_VECTOR &0TOJ:RP  
interrupt void UART0_RX_ISR(void) / /qTMxn  
{ NFGC.<  
  uchar data=0; sSOI5W3A  
  data=U0RXBUF;                       //接****到的数据存起来 +S M $#  
  send_tbyte(data);                    //将接****到的数据再发送出去 %iIryv;  
} '6{q;Bxo  
/* :c,\8n  
#pragma vector = UART0RX_VECTOR 7 "=  
interrupt void UART0_TX_ISR(void) hC}A%_S  
{ )8&Q.? T  
; IDzP <u8v  
} %Ua*}C   
*/ |LKhT4rE  
void main(void) { [w~teX0!  
    WDTCTL = WDTPW | WDTHOLD;    // Stop watchdog timer  <_MQC  
    shizhong_int(); pw:<a2.  
    UART_Init(); {i^ ?XdM  
    _EINT(); ".v9#|  
    while(1) ? $pGG  
    { Pf)<6?T  
        ;//send_tbyte(0x32); $ sEe0  
    } O<f_-n@G|  
*we3i  
警告:#2580-D pragma vector = accepts number `(=)8>|e  
是在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 '&tG?gb&  
4y?n [/M/  
#include <msp430.h> p!7FpxZY  
#include<msp430f149.h> ,{u yG:  
#include"intrinsics.h" gnOt+W8  
#define CPU_F ((double)8000000)                                     //晶振8MHZ O7m(o:t x3  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 {_[N<U:QT&  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 vXf!G`D  
#define uchar unsigned char dO<ERY  
#define uint  unsigned int FEz-+X<q2  
#define ulong unsigned long XK3tgaH  
//串口 ghG**3xr  
#define baud           9600                                //设置波特率的大小 qFCOUl  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 %~H-)_d20  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 WUe{vV#S'0  
#define baud_l         (uchar)(baud_setting)               //低位 {9&;Q|D z  
M#4p E_G  
void shizhong_int()//XT2 8MHZ .\ULbN3Z  
{ 6$Xzpg(o  
uchar i; J s@hLP `  
BCSCTL1 &=~XT2OFF;   //XT2高速晶振****启 |P HT694Uz  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; ;>EM[u  
ifMRryN4  
  do kzQ+j8.,U  
  { + s,=lL  
     IFG1&=~OFIFG;                   //清楚振荡器错误标志 3</_c1~  
    for(i=0;i<100;i++) VK\X&Y3l  
      //  _NOP(); C\Wmq [  
      ; EPI4!3]  
   } JW83Tp8[8  
   while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 vAF "n  
  IFG1&=~OFIFG; 1y@i}<9F  
} _lJ!R:*  
_/s$ZCd  
void UART_Init() //串口0设置 wtQ++l%{G  
{  lHY+}v0  
   U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 urs,34h  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 F4-$~ v@  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, ^+>laOzC`8  
   U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N hc(#{]].  
   U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 5,lEx1{_  
   U0MCTL=0x00;                //微调寄存器为0,波特率9600bps O_ muD\  
   ME1|=UTXE0;                 //UART1发送使能 ?DS@e@lx  
  ME1|=URXE0;                 //UART1接****使能 5FPM`hLT  
  U0CTL&=~SWRST; 4<w.8rR:A  
   IE1|=URXIE0;                //接****中断使能位 { =9,n\85#  
6xx<Y2@  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 :gv{F} ##  
  P3DIR|= BIT4;               //设置IO口方向为输出 <y('hI'  
  P3SEL|= BIT5; !OhC/f(GBZ  
} vFzRg5lH  
//发送数据 `!3SF|x&  
void send_tbyte(uchar data) $D~0~gn~  
{ g-4M3of  
while((IFG1&UTXIFG0)==0); 64 wv<r]5j  
U0TXBUF = data; I;,77PxD  
} gS!:+G%  
/* ]N QfX[  
  * main.c pGP7nw_g  
  */ r!|6:G+Q  
G/y5H;<9M  
#pragma vector = UART0RX_VECTOR !]A  
interrupt void UART0_RX_ISR(void) q<x/Hat)  
{ #X+JHl  
   uchar data=0; IEL%!RFG  
   data=U0RXBUF;                       //接****到的数据存起来 6IN e@  
  send_tbyte(data);                    //将接****到的数据再发送出去 p}}R-D&K  
} "=HA Y  
/* >mbHy<<  
#pragma vector = UART0RX_VECTOR Ljm[?*H#  
interrupt void UART0_TX_ISR(void) 9R!atPz9  
{ CCs%%U/=  
; ch*8 B(:  
} t5^{D>S1  
*/ ]#i igPZ7  
void main(void) { 6%\J"AgXO  
     WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer W<h)HhyG  
     shizhong_int(); np|S y;:  
     UART_Init(); Q^P}\wb>  
     _EINT(); '0;l]/i.  
     while(1) >>4qJ%bL  
     { @W.S6;GA\  
      ;//send_tbyte(0x32); F> Ah0U0  
     }
最佳答案奖励: (+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