上一主题下一主题
关键字
主题 : 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> ToXWFX  
#include<msp430f149.h> AjC:E+g  
#include"intrinsics.h" Q]:O#;"<  
#define CPU_F ((double)8000000)                                     //晶振8MHZ D'"  T'@  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 LK^|JEu  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 j]Auun  
#define uchar unsigned char d+9V% T  
#define uint  unsigned int d>NGCe  
#define ulong unsigned long I= mz^c{  
//串口 V>@[\N[  
#define baud           9600                                //设置波特率的大小 o<`vh*U@,4  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 a:kAo0@":j  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 uZqL'l+/y  
#define baud_l         (uchar)(baud_setting)               //低位 FXQWT9Kk~_  
eV;r /4  
void shizhong_int()//XT2 8MHZ =o@;K~-  
{ oV|O`n  
uchar i; E)"19l|}B  
BCSCTL1 &=~XT2OFF;      //XT2高速晶振****启 g}an 5a  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; !8{ VLg  
Ayz*2 N`%  
do c4JV~VS+  
{ #mxOwvJ  
    IFG1&=~OFIFG;                   //清楚振荡器错误标志 ' \JE>#  
    for(i=0;i<100;i++) v 6~9)\!j  
     //  _NOP(); C{exvLQ  
        ; Q$%apL  
  } CM6% g f3  
  while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 ZU4=&K  
  IFG1&=~OFIFG; f|[7LIdh-  
} |OeyPD #  
f56yI]*N=<  
void UART_Init()     //串口0设置 dwOfEYC  
{ 3CCs_AO  
  U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 i3-5~@M  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 _l d.Xmvd  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, Kb~nC6yJc  
  U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N &l(T},-X  
  U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 <)qa{,GX\  
  U0MCTL=0x00;                //微调寄存器为0,波特率9600bps ]U?nYppV  
  ME1|=UTXE0;                 //UART1发送使能 E=NjWO  
  ME1|=URXE0;                 //UART1接****使能 :;$MUOps  
  U0CTL&=~SWRST; 92TuuN#{  
  IE1|=URXIE0;                //接****中断使能位 w,%"+ tY_  
xP8/1wd.  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 u`ir(JIj]  
  P3DIR|= BIT4;               //设置IO口方向为输出 2;)IBvK  
  P3SEL|= BIT5; RDps{),E;d  
} [Rj4= qq=  
//发送数据 }T_"Vg q  
void send_tbyte(uchar data) Dj/Hz\  
{ `E~"T 0RX  
while((IFG1&UTXIFG0)==0); tP_.-//  
U0TXBUF = data; LWrYK i  
} 2)EqqX[D  
/* R0t!y3r&N  
* main.c m2SJ\1 J=  
*/ lz^Vi!|p  
p39$V[*g(  
#pragma vector = UART0RX_VECTOR + S+!:IB  
interrupt void UART0_RX_ISR(void) u<j;+-]8h  
{ UD HOcb  
  uchar data=0; @@ j\OR  
  data=U0RXBUF;                       //接****到的数据存起来 c{^1`(#?  
  send_tbyte(data);                    //将接****到的数据再发送出去 wn"\ @QvG  
} q:_:E*o  
/* %C%3c4+Oh  
#pragma vector = UART0RX_VECTOR V;^-EWNj  
interrupt void UART0_TX_ISR(void) r zdQLan  
{ x~k3kj  
; t!4 (a0\$F  
} *vQ 6LF;y  
*/ B<~AUf*y  
void main(void) { |keU+De  
    WDTCTL = WDTPW | WDTHOLD;    // Stop watchdog timer y%|Ez  
    shizhong_int(); C;ab-gh  
    UART_Init(); G%Lt>5*!nE  
    _EINT(); ^WU[+H ;  
    while(1) Cw^iA U  
    { q'fOlq  
        ;//send_tbyte(0x32); iTevl>p!  
    } _G`Q2hf"5  
t(<k4ji,  
警告:#2580-D pragma vector = accepts number nls $ wE  
是在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 O3(H_(P  
a O(&<  
#include <msp430.h> Z`{GjV3%wH  
#include<msp430f149.h> MF4B 2d  
#include"intrinsics.h" $ Q*^c"&  
#define CPU_F ((double)8000000)                                     //晶振8MHZ F!ra$5u  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 ci{WyIh  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 ^1z)\p1  
#define uchar unsigned char D P+W* 87J  
#define uint  unsigned int tcj3x<  
#define ulong unsigned long ZTK)N  
//串口 -n`2>L1  
#define baud           9600                                //设置波特率的大小 H.[t&VO  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 1Et{lrgh f  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 , @dhJ8/  
#define baud_l         (uchar)(baud_setting)               //低位 $D(q  
0*8uo W t&  
void shizhong_int()//XT2 8MHZ qc@v"pIz'S  
{ ak] H|D" 9  
uchar i; p$@l,4@{  
BCSCTL1 &=~XT2OFF;   //XT2高速晶振****启 *Au[{sR  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; u_X(c'aE;  
mA0|W# NB  
  do .*g^ i`  
  { 0;x<0P  
     IFG1&=~OFIFG;                   //清楚振荡器错误标志 ?4MZT5 .  
    for(i=0;i<100;i++) be:=-B7!  
      //  _NOP(); ;>h:VnV(>(  
      ; =z +iI;  
   } DjQgF=;  
   while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 lxXIu8  
  IFG1&=~OFIFG; L|K^w *\C  
} spv'r!*\ed  
95hdQ<W  
void UART_Init() //串口0设置 _ cD-E.E%  
{ z)XI A)i6  
   U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 /^9yncG;>  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 5qQ\H}  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, 73>Hzpv0  
   U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N Lt\=E8&rh  
   U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 &<oDl _^  
   U0MCTL=0x00;                //微调寄存器为0,波特率9600bps i4r8146D[  
   ME1|=UTXE0;                 //UART1发送使能 8I,/ysT:  
  ME1|=URXE0;                 //UART1接****使能 D}A>`6W<  
  U0CTL&=~SWRST; A<<Bm M.%  
   IE1|=URXIE0;                //接****中断使能位 %8~g#Z  
co [  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 A_JNj8<6r  
  P3DIR|= BIT4;               //设置IO口方向为输出 >*S ;z+!&  
  P3SEL|= BIT5; mZ}C)&,m2  
} %P`w"H,v3#  
//发送数据 GP;UuQz  
void send_tbyte(uchar data) fVx_]5jM  
{ ^A' Bghy  
while((IFG1&UTXIFG0)==0); 31=v US  
U0TXBUF = data; U((mOm6  
} `}|$eF&  
/* Tg\wBhJr|  
  * main.c ;LE9w^>^V  
  */ W:*  {7qJ  
C}8 3t~Q  
#pragma vector = UART0RX_VECTOR SWPb=[WEz  
interrupt void UART0_RX_ISR(void) vfPIC!  
{ xI(Y}>  
   uchar data=0; c&;Xjy  
   data=U0RXBUF;                       //接****到的数据存起来 ERZWK  
  send_tbyte(data);                    //将接****到的数据再发送出去 68, (+vkB  
} VSW"/{Lp  
/* aYd`E4S+  
#pragma vector = UART0RX_VECTOR `d6,]'  
interrupt void UART0_TX_ISR(void) I4\ c+f9  
{ #8;#)q_[u  
; unN=yeut  
} T }^2IJ]  
*/ yOr5kWqX  
void main(void) { p4M7BK:nf  
     WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer <9yB & ^  
     shizhong_int(); :Co+haW  
     UART_Init(); d6ABgQi0  
     _EINT(); F|&=\Q  
     while(1) cu#s}* Ip  
     { k*Vf2O3${  
      ;//send_tbyte(0x32); tDwj~{a~  
     }
最佳答案奖励: (+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