上一主题下一主题
关键字
主题 : 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> I[4E?  
#include<msp430f149.h> wR;l"*j  
#include"intrinsics.h" KDXo9FzF  
#define CPU_F ((double)8000000)                                     //晶振8MHZ ze 4/XR  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 5vpf;  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 Fj]S8wI  
#define uchar unsigned char plf<O5'  
#define uint  unsigned int -"cN9RF  
#define ulong unsigned long yr=r? h}  
//串口 B}MJ?uvA  
#define baud           9600                                //设置波特率的大小 !3b%Q</M H  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 3% P?1s  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 5G!X 4%a  
#define baud_l         (uchar)(baud_setting)               //低位 S5d{dTPq  
JNu- z:J  
void shizhong_int()//XT2 8MHZ Qb|dp~K.M  
{ q@\_q!  
uchar i; )F~_KD)7jJ  
BCSCTL1 &=~XT2OFF;      //XT2高速晶振****启 RhJ<<T.2  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; 6 %=BYDF  
,S5#Kka~a  
do n;=A'g|Q  
{ :D,YR(])  
    IFG1&=~OFIFG;                   //清楚振荡器错误标志 O<E0L&4-&  
    for(i=0;i<100;i++) GmHsO/  
     //  _NOP(); [a`i{(!  
        ; g|zK%tR_P  
  } PWmz7*/  
  while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 [yyV`&  
  IFG1&=~OFIFG; \%C[l  
} dL \8^L  
P$QjDu-  
void UART_Init()     //串口0设置 <-?B#  
{ iWCV( !  
  U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 "5YdmBy  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 \ 1Bgs^  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, Om^/tp\  
  U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N "h2Ny#  
  U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 ep?0@5D}]  
  U0MCTL=0x00;                //微调寄存器为0,波特率9600bps Y; w]u_  
  ME1|=UTXE0;                 //UART1发送使能 [s/@z*,M1  
  ME1|=URXE0;                 //UART1接****使能 ;1dz?'%V  
  U0CTL&=~SWRST; Zb 2  
  IE1|=URXIE0;                //接****中断使能位 @( t:E`8  
gctaarB&  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 V4-=Ni]k  
  P3DIR|= BIT4;               //设置IO口方向为输出 A!D:Kc3  
  P3SEL|= BIT5; sfV.X:ev  
} </X"*G't  
//发送数据 9X%Klm 5w  
void send_tbyte(uchar data) eTc`FXw`  
{ Wa(S20y F  
while((IFG1&UTXIFG0)==0); 8x" d/D  
U0TXBUF = data; mc'p-orAf  
} /)1-^ju  
/* ?a%i|Z7!  
* main.c `$ H   
*/ X2[cR;;'  
H1nQ.P]_  
#pragma vector = UART0RX_VECTOR {*U:Wm<  
interrupt void UART0_RX_ISR(void) {wP|b@(1t  
{ ,*[LnR  
  uchar data=0; f>dkT'4  
  data=U0RXBUF;                       //接****到的数据存起来 CiI: uU  
  send_tbyte(data);                    //将接****到的数据再发送出去 Bs?F*,zDJ  
} V+24-QWh  
/* kDq%Y[6Z  
#pragma vector = UART0RX_VECTOR W~3tQ!  
interrupt void UART0_TX_ISR(void) l;A_Aii(  
{ ^kvH/Y&  
; =on!&M  
} qD*\}b]9I  
*/ 1`lFF_stkP  
void main(void) { V^I /nuy  
    WDTCTL = WDTPW | WDTHOLD;    // Stop watchdog timer W_\L_)^X  
    shizhong_int(); 3|Sy'J0'K  
    UART_Init(); lM^!^6=v0l  
    _EINT(); hxVM]e[  
    while(1) Lc<xgN+cJ  
    { I&8SP$S>J  
        ;//send_tbyte(0x32); =zeLs0s;  
    } b0Ov+ )7#  
*g4Cy 8$  
警告:#2580-D pragma vector = accepts number 8$ZSF92C  
是在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 &`^P O $  
h; "pAE  
#include <msp430.h> ZR8%h<  
#include<msp430f149.h> vXLGdv::  
#include"intrinsics.h" :6[G;F7s  
#define CPU_F ((double)8000000)                                     //晶振8MHZ 4Wk`P]?^  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 6'[gd  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 "969F(S$  
#define uchar unsigned char $No^\.mV  
#define uint  unsigned int |QHIB?C?`  
#define ulong unsigned long 5I>a|I!j  
//串口 /)*si  
#define baud           9600                                //设置波特率的大小 "~:P-]`G  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 >v'@p  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 9  M90X8  
#define baud_l         (uchar)(baud_setting)               //低位 ]MmFtdvE  
 ZE[NQ8  
void shizhong_int()//XT2 8MHZ &ev#C%Nu  
{ Sah!|9  
uchar i; 9 Eqv^0u  
BCSCTL1 &=~XT2OFF;   //XT2高速晶振****启 %{B4M#~  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; U7xKu75G1  
%zYTTPLZ  
  do XE S$V15  
  { ^ ~kfo|  
     IFG1&=~OFIFG;                   //清楚振荡器错误标志 4K0Fc^-  
    for(i=0;i<100;i++) WiqkC#N  
      //  _NOP(); Mt*eC)~ Yx  
      ; 'byao03  
   } Zfc{}ius  
   while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待  ,8)aK y  
  IFG1&=~OFIFG; Ij?Qs{V  
} "\O{!Hj8  
c?}{>ig/)  
void UART_Init() //串口0设置 rI'kZ0&  
{ +HF*X~},i  
   U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 Mi<}q@]e  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 F#Bi*YY  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, A"wso[{  
   U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N 5 J 7XVe>  
   U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 0IxHB|^$  
   U0MCTL=0x00;                //微调寄存器为0,波特率9600bps :MILOwF  
   ME1|=UTXE0;                 //UART1发送使能 ~EO=;a_  
  ME1|=URXE0;                 //UART1接****使能 b 4CXif  
  U0CTL&=~SWRST; -ze@~Z@  
   IE1|=URXIE0;                //接****中断使能位 6#Bg99c  
_Kv;hR>  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 )AXa.y  
  P3DIR|= BIT4;               //设置IO口方向为输出 Qy\K oo  
  P3SEL|= BIT5; &t@|/~%[  
} :o_6  
//发送数据 %iD'2e:  
void send_tbyte(uchar data) /H$/s=YU\U  
{ 2l}3L  
while((IFG1&UTXIFG0)==0); 5[A4K%EL  
U0TXBUF = data; k-8$ 43  
} $`txU5#vs  
/* aq$adPtu  
  * main.c e[%g'}D:-  
  */ 2KQpmNN  
=~ ="#  
#pragma vector = UART0RX_VECTOR fHacVj J  
interrupt void UART0_RX_ISR(void) d~w}{LR[1  
{ |r/4 ({n  
   uchar data=0; FQw@ @  
   data=U0RXBUF;                       //接****到的数据存起来 W_ubgCB  
  send_tbyte(data);                    //将接****到的数据再发送出去 h9j/mUwV  
} "kkZK=}Nv  
/* N}7tjk   
#pragma vector = UART0RX_VECTOR  `AxhA.&V  
interrupt void UART0_TX_ISR(void) QW6\~l 4  
{ <'<{|$Pw  
; yWZ%|K~$  
} S1W(]%0/  
*/ ZH=oQV)6  
void main(void) { (C!33s1  
     WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer Uv(Uj3D  
     shizhong_int(); UU 2 =W  
     UART_Init(); ^r0mx{i&  
     _EINT(); c!=^C/5Ee  
     while(1) .RxAYf|  
     { F<N{ x^  
      ;//send_tbyte(0x32); y w>T1  
     }
最佳答案奖励: (+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