3936|6

147

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

非常困惑的UART中断 [复制链接]

我用的单片机是msp43g2553,在调试串口的时候遇到一个棘手的问题,一时不能解决,下面是我写的测试串口的小程序:
#include
intcount=0;
int redata[10];
int flag=0;
#pragma vector=USCIAB0RX_VECTOR   
__interrupt void USCI0RX_ISR(void)
{
   redata[count++]=UCA0RXBUF;
   flag=1;
}
void main()
{
P1SEL = BIT1 + BIT2 ;                    // P1.1 = RXD, P1.2=TXD
P1SEL2 = BIT1 + BIT2 ;                     // P1.1 = RXD, P1.2=TXD
UCA0CTL1 |= UCSSEL_1;                    // CLK = ACLK      ACLK默认外部32K晶振
UCA0BR0 = 0x03;                       // 32kHz/9600 = 3.41       32k/19200=1.66667
UCA0BR1 = 0;                          //
UCA0MCTL = UCBRS1 + UCBRS0;              // Modulation UCBRSx = 3
UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI statemachine**
  IE2|= UCA0RXIE;                          //Enable USCI_A0 RX interrupt
_EINT();        
while(1)
  {
   if(count==9)
    {
     for(count=0;count<10;count++)
     {  
       while (!(IFG2&UCA0TXIFG));
         UCA0TXBUF=redata[count];
     }
    }
  }
}
第一次进入中断是时候,发现我发送的字母A收到了。


当跳出接收中断,数组的值一两个变量flagcount都没变。
可是当再次发送一个字符,第二次进入中断的时候,数组和两个变量都变成0了,非常困惑。

请指教!

未命名.jpg (36.62 KB, 下载次数: 0)

第一次进入中断

第一次进入中断

未命名l、.jpg (37.52 KB, 下载次数: 0)

第二次进入中断,变量都清零了

第二次进入中断,变量都清零了

最新回复

如果第二次進入中斷,數值就不見 和flag在程式裡面會被清為0的情形來看 有可能是cpu被reset了 在main的前面第一行設個斷點 看有沒有被reset  详情 回复 发表于 2012-8-8 09:31
 
点赞 关注

回复
举报

1799

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 
产生中断,发送数据完,你没对count置零,再者你光发个A,count达不到9的时候,为什么能收到数据
我是新手,共同探讨下

点评

电脑是不会收到数据。 重点是第二次进入中断的时候全部我定义的变量都变成0了。:Cry:  详情 回复 发表于 2012-8-7 15:59
 
 

回复

147

帖子

0

TA的资源

一粒金砂(高级)

板凳
 

回复 沙发 sint27 的帖子

电脑是不会收到数据。
重点是第二次进入中断的时候全部我定义的变量都变成0了。

点评

哦,你这是分步调试的吧 那你实际用串口助手测的时候是怎么现象呢 发送完数据count肯定是要置零的  详情 回复 发表于 2012-8-7 16:07
 
 
 

回复

1799

帖子

0

TA的资源

五彩晶圆(初级)

4
 

回复 板凳 挨紧 的帖子

哦,你这是分步调试的吧
那你实际用串口助手测的时候是怎么现象呢
发送完数据count肯定是要置零的

点评

是啊,分步调试的。 对, count是要置为0,这点我忘记了。  详情 回复 发表于 2012-8-7 16:20
 
 
 

回复

147

帖子

0

TA的资源

一粒金砂(高级)

5
 

回复 4楼 sint27 的帖子

是啊,分步调试的。
对, count是要置为0,这点我忘记了。
 
 
 

回复

32

帖子

0

TA的资源

一粒金砂(中级)

6
 
如果第二次進入中斷,數值就不見
和flag在程式裡面會被清為0的情形來看
有可能是cpu被reset了
在main的前面第一行設個斷點
看有沒有被reset

点评

一言惊醒梦中人,这位大侠,太感激你了!:kiss: 我忘记把看门狗停掉!这天煞的狗!:Mad:  详情 回复 发表于 2012-8-8 16:16
 
 
 

回复

147

帖子

0

TA的资源

一粒金砂(高级)

7
 

回复 6楼 scott123 的帖子

一言惊醒梦中人,这位大侠,太感激你了!
我忘记把看门狗停掉!这天煞的狗!
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表