上一主题下一主题
关键字
主题 : 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> Nsb13mlY  
#include<msp430f149.h> i{.!1i:  
#include"intrinsics.h" Ktoxl+I?  
#define CPU_F ((double)8000000)                                     //晶振8MHZ ^+88z>  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 pnWDsC~)  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 UWz<~Vy  
#define uchar unsigned char umY4tNe]$  
#define uint  unsigned int GKX#-zsh79  
#define ulong unsigned long 1:?Wv DN=  
//串口 B|tP3<  
#define baud           9600                                //设置波特率的大小 > 5\rU[H>  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 [dL#0~CL$  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 8D-g%Aj-  
#define baud_l         (uchar)(baud_setting)               //低位 {B 34^H:  
Vx'_fb?wap  
void shizhong_int()//XT2 8MHZ b1-JnEc  
{ rQU;?[y  
uchar i; 7P=j2;7 v  
BCSCTL1 &=~XT2OFF;      //XT2高速晶振****启 CQS34&G$a  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; fN@2 B  
e(cctC|l  
do .-{B  
{ P'[w9'B  
    IFG1&=~OFIFG;                   //清楚振荡器错误标志 : -OHD#>%  
    for(i=0;i<100;i++) M%Ov6u<I8  
     //  _NOP(); qm2  
        ; ]*?qaIdqu  
  } mV6\gR[h  
  while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 X2~>Z^, U  
  IFG1&=~OFIFG; {2A/@$?  
} Z':}ZXy]  
bmFnsqo  
void UART_Init()     //串口0设置 1-4W4"#  
{ 1 %K^(J;  
  U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 d H]'&&M  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 H1]G<N3  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, Srg `Tt]  
  U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N 8V?O=3 <a  
  U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 {fmSmD  
  U0MCTL=0x00;                //微调寄存器为0,波特率9600bps )Z2HzjE  
  ME1|=UTXE0;                 //UART1发送使能 [kaj8  
  ME1|=URXE0;                 //UART1接****使能 8wMu^3r  
  U0CTL&=~SWRST; F6`$5%$M;?  
  IE1|=URXIE0;                //接****中断使能位 }j;*7x8(  
,onOwPz  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 B_$hi=?TTd  
  P3DIR|= BIT4;               //设置IO口方向为输出 'tm%3` F  
  P3SEL|= BIT5; &;I=*B~kE$  
} U= QfInB  
//发送数据 )%FRBO]  
void send_tbyte(uchar data) z]:{ruvH  
{ 8K$q6V%#  
while((IFG1&UTXIFG0)==0); @ W[LA<  
U0TXBUF = data; G;Jqby8d  
} pu3ly&T#a_  
/* M@%$9N)gd  
* main.c S&N[@G  
*/ >..C^8 "  
ZxW4 i  
#pragma vector = UART0RX_VECTOR G>Uam TM  
interrupt void UART0_RX_ISR(void) &ZmWR  
{ BUhLAO  
  uchar data=0; , z8<[Q-#  
  data=U0RXBUF;                       //接****到的数据存起来 l.gt+e  
  send_tbyte(data);                    //将接****到的数据再发送出去 lyZ[t PS  
} uv >T8(w  
/* %z9eVkPI~  
#pragma vector = UART0RX_VECTOR OZ,%T9vP  
interrupt void UART0_TX_ISR(void) `GGACH3#s  
{ YhpNeP{A  
; %UV'HcO/gp  
} <S/`-/= 2  
*/ ^dc~hD  
void main(void) { {Ftz4y)6  
    WDTCTL = WDTPW | WDTHOLD;    // Stop watchdog timer X0IXj%\N  
    shizhong_int(); ~ QVN^8WPg  
    UART_Init(); "otks\I<  
    _EINT(); OanHG  
    while(1) ]6#7TT  
    { aDXdr\ C6  
        ;//send_tbyte(0x32); <X5'uve  
    } vO2I"Y*\  
N9lCbtn(0x  
警告:#2580-D pragma vector = accepts number y]z^e\qc)  
是在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 ,z5B"o{Et  
B`w@Xk'D  
#include <msp430.h> eKvQS}11  
#include<msp430f149.h> _z6" C8W  
#include"intrinsics.h" s;W1YN  
#define CPU_F ((double)8000000)                                     //晶振8MHZ HDQH7Bs  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 y^}00Z+l  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时  WfH4*e  
#define uchar unsigned char ,V`[;~49  
#define uint  unsigned int ?4sF:Y+\  
#define ulong unsigned long |5g1D^b]s^  
//串口 ^oXLk&d  
#define baud           9600                                //设置波特率的大小 wS;hC&~2  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 k.6(Q_TS  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 + 0 |d2_]E  
#define baud_l         (uchar)(baud_setting)               //低位 {w52]5l  
NsF8`r g  
void shizhong_int()//XT2 8MHZ &XZS}n  
{ &Ef_p-e-P  
uchar i; uTvck6  
BCSCTL1 &=~XT2OFF;   //XT2高速晶振****启 (0!U,8zz  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; f[+N=vr  
M D,+>kh  
  do ]#P>wW  
  { xa?   
     IFG1&=~OFIFG;                   //清楚振荡器错误标志 $zD}hO9  
    for(i=0;i<100;i++) R6E.C!EI  
      //  _NOP(); j7v?NY  
      ; zOT(>1'  
   } by@}T@^\  
   while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 3ox 0-+_  
  IFG1&=~OFIFG; U`)o$4Bq  
} gFAtIx4  
eG\`SKx_  
void UART_Init() //串口0设置 D>m!R[!o  
{ $^louas&  
   U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 ?)mM]2%%  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 THf*<|  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, zqs|~W]c  
   U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N .vk|aIG  
   U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 yp\s Jc`  
   U0MCTL=0x00;                //微调寄存器为0,波特率9600bps 2-x#|9  
   ME1|=UTXE0;                 //UART1发送使能 1@ .Eh8y  
  ME1|=URXE0;                 //UART1接****使能 Gk2R:\/Y  
  U0CTL&=~SWRST; tZqy \_G  
   IE1|=URXIE0;                //接****中断使能位 #t?tt,nc}  
a[A9(Ftn  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 59Lmv &s  
  P3DIR|= BIT4;               //设置IO口方向为输出 N_eZz#);  
  P3SEL|= BIT5; 5fDnr&DR  
} \\9$1yg   
//发送数据 yx&'W_Q@  
void send_tbyte(uchar data) "*N=aHsj  
{ ouf91<n  
while((IFG1&UTXIFG0)==0); Ed+"F{!eQ  
U0TXBUF = data; @ZTsl ?  
} QGM@m:O  
/* .uwD;j +#  
  * main.c iw)^; 8q  
  */ qmWn$,ax  
afNqK~  
#pragma vector = UART0RX_VECTOR LCf)b>C*  
interrupt void UART0_RX_ISR(void) oP 4z>  
{ ic]b"ItD  
   uchar data=0; Kfl#78$d  
   data=U0RXBUF;                       //接****到的数据存起来 \n`)>-  
  send_tbyte(data);                    //将接****到的数据再发送出去 k}h\RCy%f  
} UoSzxL  
/* Vim*4^[#L  
#pragma vector = UART0RX_VECTOR fu]mxGPc  
interrupt void UART0_TX_ISR(void) CW9vC  
{ X:1&Pd i  
; yl'@p 5n  
} 'gQ0=6(\  
*/ ~R!M.gY[rK  
void main(void) { 2V6kCy@V  
     WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer ]:X# w0UR  
     shizhong_int(); Gi=s|vt  
     UART_Init(); 2@~hELkk/E  
     _EINT(); Zl4X,9Wt  
     while(1) 7yM"G$  
     { psaPr E  
      ;//send_tbyte(0x32); ]QbT%0  
     }
最佳答案奖励: (+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