上一主题下一主题
关键字
主题 : 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> x&vD,|V!  
#include<msp430f149.h> MT0{hsuK9  
#include"intrinsics.h" &Z!2xfQy>  
#define CPU_F ((double)8000000)                                     //晶振8MHZ w\*/(E<:  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 c<e\JJY5?  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 }C.{+U  
#define uchar unsigned char s\!vko'M  
#define uint  unsigned int ~\,6 C1M  
#define ulong unsigned long |9eY R  
//串口 +r_[Tj|Er  
#define baud           9600                                //设置波特率的大小 {[ *_HAy7  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 ]E^f8s0#V  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 I_7EfAqg(  
#define baud_l         (uchar)(baud_setting)               //低位 w-Fk&dC69  
lJ#>Y5Qg  
void shizhong_int()//XT2 8MHZ 'O9=*L) X  
{ a0\UL"z#+  
uchar i; or`stBx  
BCSCTL1 &=~XT2OFF;      //XT2高速晶振****启 ku8c)  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; :X*LlN  
qCN7i&k,  
do 3=7h+ZgB  
{ I xBO$ 2  
    IFG1&=~OFIFG;                   //清楚振荡器错误标志 DjvgKy=Jr_  
    for(i=0;i<100;i++) # HYkzjb  
     //  _NOP(); HYmXPpse  
        ; %[m1\h"1  
  } J?fh3RW9  
  while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 (OQ @!R&  
  IFG1&=~OFIFG; \w[%n0  
} tuV?:g?  
z} 8L}:  
void UART_Init()     //串口0设置 Hd`p_ ?3]  
{ [:@?,?V\N  
  U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 )^f Q@C8  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 qFbUM;  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, 8;&S9'ci  
  U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N rss.F3dK  
  U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 v1g5(  
  U0MCTL=0x00;                //微调寄存器为0,波特率9600bps ~9YA!48  
  ME1|=UTXE0;                 //UART1发送使能 i 9k]Q(o  
  ME1|=URXE0;                 //UART1接****使能 ~<Oj XuYu  
  U0CTL&=~SWRST; C-^%g [#  
  IE1|=URXIE0;                //接****中断使能位 3N0X?* (x|  
ai  _fN  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 (jMAa%  
  P3DIR|= BIT4;               //设置IO口方向为输出 $_zkq@  
  P3SEL|= BIT5; ;s. 5\YZ"k  
} x$ J.SbW  
//发送数据 #IGoz|m  
void send_tbyte(uchar data) X+E\]X2  
{ C2=iZ`Z> T  
while((IFG1&UTXIFG0)==0); @))}\:  
U0TXBUF = data; \i;&@Kp.N  
} ~73i^3yf  
/* X$|TN+Ub  
* main.c 26#Jhb E+  
*/ nHA`B.:B  
}vUlTH  
#pragma vector = UART0RX_VECTOR hp]ng!I{\u  
interrupt void UART0_RX_ISR(void) 7?!Z+r  
{ [X">v aa  
  uchar data=0; <V:<x  
  data=U0RXBUF;                       //接****到的数据存起来 "H="Ip!s  
  send_tbyte(data);                    //将接****到的数据再发送出去 *)`kx   
} k BiBXRt  
/* Vy% :\p+  
#pragma vector = UART0RX_VECTOR s@ 2 0#D  
interrupt void UART0_TX_ISR(void) si^4<$Nr%j  
{ A`x -L  
; n-hvh-ZO  
} Wm$`ae   
*/ eg2U+g4  
void main(void) { p]h*6nH>~  
    WDTCTL = WDTPW | WDTHOLD;    // Stop watchdog timer $h 08Z  
    shizhong_int(); Tf#2"(!  
    UART_Init(); dSe8vA!)  
    _EINT(); ~MhgAC  
    while(1) FJ{,=@  
    { ePq13!FC/  
        ;//send_tbyte(0x32); c Pq Dsl3  
    } Sa;<B :|  
j{{~ZM  
警告:#2580-D pragma vector = accepts number Pt6hGSo.  
是在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 ^3B{|cqf  
^W5rL@h_  
#include <msp430.h> `<i|K*u  
#include<msp430f149.h> Tw/kD)u{  
#include"intrinsics.h" JR|yg=E  
#define CPU_F ((double)8000000)                                     //晶振8MHZ :{pvA;f  
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))   //ms延时 BQ{Gp 2N  
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//us延时 }jBr[S5  
#define uchar unsigned char kbJ/7  
#define uint  unsigned int @ +h 2R  
#define ulong unsigned long QMea2q|3$  
//串口 6e&Y%O'8  
#define baud           9600                                //设置波特率的大小 VJJGTkm  
#define baud_setting   (uint)((ulong)CPU_F/((ulong)baud))  //波特率计算公式 XL c&7  
#define baud_h         (uchar)(baud_setting>>8)            //提取高位 W-<E p<7{  
#define baud_l         (uchar)(baud_setting)               //低位 q4@n pbx  
A ^ $9[_  
void shizhong_int()//XT2 8MHZ Izm8 qt=m  
{ #qWa[kB  
uchar i; v^2K=f[nE  
BCSCTL1 &=~XT2OFF;   //XT2高速晶振****启 8~AO~  
BCSCTL2 = SELM_2+SELS;//MCLK为XT2,SMCLK为XT2; 6pDb5@QjTy  
P$S>=*`n U  
  do 6 DqV1'  
  { pm$,B7Q`oO  
     IFG1&=~OFIFG;                   //清楚振荡器错误标志 ,pE{N&p9  
    for(i=0;i<100;i++) 0^nnR7  
      //  _NOP(); |0:< Z(   
      ; g+;m?VJ  
   } -twV?~f  
   while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待 (|L 0s)  
  IFG1&=~OFIFG; y3 @R>@$  
} $HT {}^B  
U1G"T(;s:  
void UART_Init() //串口0设置 Eh&*"&fHR  
{ e}Cp;c]=  
   U0CTL|=SWRST;               //置位SWRST该位先为1设置串口然后为0,最后设置中断使能 *t.L` G  
  U0CTL|=CHAR;                //8位数据模式 ,0为7位,1为8位 <o,]f E[  
  U0TCTL|=SSEL1;              //SMCLK为串口时钟,0x20,0x00为uclki,0x10为aclk即SSEL0, QxG:NN;jW  
   U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N ~6L\9B )  
   U0BR0=baud_l;               //N=UBR+(UxMCTL)/8 4^\ 5] d!  
   U0MCTL=0x00;                //微调寄存器为0,波特率9600bps '1{co/Y  
   ME1|=UTXE0;                 //UART1发送使能 4%>iIPXi.(  
  ME1|=URXE0;                 //UART1接****使能 =EwC6+8*M  
  U0CTL&=~SWRST; xR `4<  
   IE1|=URXIE0;                //接****中断使能位 E uxD,(  
'*H&s  
  P3SEL|= BIT4;               //设置IO口为普通I/O模式 ~x;1&\'k  
  P3DIR|= BIT4;               //设置IO口方向为输出 k)j, ~JH  
  P3SEL|= BIT5; TY}9;QL:  
} OhMnG@@  
//发送数据 6S7 =+>  
void send_tbyte(uchar data) ) Zud|%L  
{ #rnO=N8  
while((IFG1&UTXIFG0)==0); .: gZ*ks~  
U0TXBUF = data; nv>|,&;  
} {jB& e,  
/* d7 |3A  
  * main.c ~nO]R   
  */ ]M%kt+u!  
5WJof`M  
#pragma vector = UART0RX_VECTOR ~1e?9D  
interrupt void UART0_RX_ISR(void) z+IHt(  
{ ;Z:zL^rvn  
   uchar data=0; "Z xM,kI  
   data=U0RXBUF;                       //接****到的数据存起来 e<F>u#d  
  send_tbyte(data);                    //将接****到的数据再发送出去 ~Q< h,P  
} I !\;NVhv  
/* e'%"G{(D  
#pragma vector = UART0RX_VECTOR 7O)j]eeoL  
interrupt void UART0_TX_ISR(void) OJX* :Q  
{ _g{*;?mS  
; Wp5w}8g  
} B_Qi  
*/ gN"Abc  
void main(void) { "`A@_;At`  
     WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer M? 7 CBqZ  
     shizhong_int(); R^t )~\d  
     UART_Init(); c:;m BS>~  
     _EINT(); WsHC%+\'  
     while(1) sqKLz  
     { /%O+]#$`0  
      ;//send_tbyte(0x32); F|Y}X|x8Q  
     }
最佳答案奖励: (+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