5355|11

167

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

我的430串口接收中断程序为什么始终进不了啊 [复制链接]

#include"msp430.h"

/**************宏定义***********************/
#define uchar unsigned char 
#define uint  unsigned int

uchar  Buffer_Rx[40];
uchar  Buffer_TX[40]="串口程序调试";           //定义发送缓冲区
uchar  Rx_long;
uchar  Flag=0;                                              //一旦我们进入中断,就改变此标志位,控制灯闪烁

/**************串口初始化,采用查询方式***********************/
/*************注意:串口初始化完成后,是处于复位状态**********************/
void  Init_usart(void)
{
    P3SEL|=0XC0;                //串口1的I/O口选择位外围模块功能
    P3DIR|=0X40;                //P3.6为输出,P3.7为输入
    
    U1TCTL=SSEL1+SSEL0;         //选择SMCLK
    U1CTL=SWRST+CHAR;           //先将串口处于复位状态,8位数据,无校验,停止位1位
 //   U1RCTL|=URXEIE;           //接收出错中断允许位
    U1TXBUF=0x00;               //先将发送缓冲区和接收缓冲区清0
 //   U1RXBUF=0x00;
    U1BR1=0;
    U1BR0=208;                  //波特率为38400
    U1MCTL=0x89;
    ME2|=UTXE1+URXE1;           //允许发送和接收
    IE2|=URXIE1;                //接收中断使能
}
void main()
{
    volatile unsigned int i=0;            // volatile to prevent optimization
    
    WDTCTL = WDTPW + WDTHOLD;             // Stop watchdog timer
    
    P4DIR |= 0x04;                        // Set P4.3  当接收完成后置位
    BCSCTL1&=~XT2OFF;                     //开启XT2
    BCSCTL2|=SELM1+SELS;                   //选择XT2CLK为MCLK和SMCLK时钟源
    
    do
    {
          IFG1&=~OFIFG;       //清除振荡器失效标志
          for(i=255;i>0;i--);
     }while(IFG1&OFIFG);//判断XT2是否起振
     
    Init_usart();
    //SR|=GIE;                            //开总中断
    
    U1CTL&=~SWRST;                        //关闭串口的复位
    _BIS_SR(GIE);                         //开总中断
  //  _EINT();            
   while(Buffer_TX!='\0')
    {        
        while((IFG2&UTXIFG1)==0);
        U1TXBUF=Buffer_TX;
 //       UTXIFG1=0;
        i++;
    }
    while(1)
    {  
        if(Rx_long==8)
        {
            i=0;
             while(Rx_long!=i)
            {        
                while((IFG2&UTXIFG1)==0);
                U1TXBUF=Buffer_TX;
                i++;
            }
            Rx_long=0;
        }
        if(Flag==1)
        {
            P4OUT ^= 0x04;                      // Toggle P4.2 using exclusive-OR

            i = 5000;                          // SW Delay
            do i--;
            while (i != 0);
            P4OUT ^= 0x04;                      // Toggle P4.2 using exclusive-OR

            i = 5000;                          // SW Delay
            do i--;
            while (i != 0);           
        }
    }
}
/************串口接收中断服务子程序**********************/
#pragma vector=USART1RX_VECTOR
__interrupt void UART1RXINT(void)
{
       _DINT();                  //关闭全局中断
      Flag=1;
      if((IFG2&URXIFG1)!=0)
      {
            Buffer_Rx[Rx_long]=U1RXBUF;
            Rx_long++;
       }
      _EINT();                   //恢复全局中断
}

上面的是我的程序源码,应该是很简单的   但就是进不了  麻烦给位大虾帮我检查一下     万分感激啊  前面有个发送给PC 的部分,能够正确接收到“串口程序调试”记个字  我参照
了网上的记个串口接收初始化的代码 都没得问题   我确实没辙了   麻烦各位了

最新回复

       中括号内i被吃掉了  详情 回复 发表于 2012-11-20 14:11
 
点赞 关注

回复
举报

12

帖子

0

TA的资源

五彩晶圆(中级)

沙发
 
首先确认端口功能配置是否正确,然后确认初始化配置是否正确,波特率设置是否正确,是否允许中断。可以去TI网站下下载相应型号CPU的各外围模块例程,例程是肯定可以用的。
 
 

回复

167

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
好    谢谢了  我试一下
 
 
 

回复

167

帖子

0

TA的资源

一粒金砂(中级)

4
 
我试了一下还是不行  真不知道问题出在哪儿了      串口发送是正常的  但是接收就是进不了中断子程序
   中断向量地址也没有问题   确实搞不懂
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

5
 
我也遇到了这个问题 您现在解决了吗 是什么原因
 
 
 

回复

6366

帖子

4917

TA的资源

版主

6
 
串口初始化配置完后,要将串口设置成置位状态

[ 本帖最后由 tiankai001 于 2012-11-16 09:19 编辑 ]
 
 
 

回复

38

帖子

0

TA的资源

一粒金砂(中级)

7
 
我目前也遇到了这个问题,我想问一下你,能具体说一下是程序哪个地方要改吗?
 
 
 

回复

900

帖子

0

TA的资源

五彩晶圆(初级)

8
 
P4DIR |= 0x04;                        // Set P4.3  当接收完成后置位

这个应该是P4.2,你是接了LED了吧,是不是这个搞错了啊
 
 
 

回复

900

帖子

0

TA的资源

五彩晶圆(初级)

9
 
if(Rx_long==8)
这个条件满足才能输出来,
while(Rx_long!=i)
            {        
                while((IFG2&UTXIFG1)==0);
                U1TXBUF=Buffer_TX;                i++;
            }
这句话U1TXBUF=Buffer_TX
 
 
 

回复

900

帖子

0

TA的资源

五彩晶圆(初级)

10
 
U1TXBUF=Buffer_TX
 
 
 

回复

900

帖子

0

TA的资源

五彩晶圆(初级)

11
 
U1TXBUF=Buffer_TX;
中括号怎么打不上去
 
 
 

回复

900

帖子

0

TA的资源

五彩晶圆(初级)

12
 
       中括号内i被吃掉了
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表