打印

奇怪!430 程序跑着跑着 串口 乱码 或 是串口死掉了

[复制链接]
3178|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lw30402048|  楼主 | 2012-11-25 23:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lw30402048 于 2012-11-30 14:03 编辑

本人是做仪器的,程序需要用到串口(和GSM模块通信用),程序得一直跑着,但是程序跑着跑着 串口就会出现乱码或者干脆串口死了,但是LCD显示什么的都正常,期间我也做了处理;程序里面 定时30分钟重新初始化串口,另外430的串口和GSM模块的串口之间加了缓存,但是还是没用,我实在没辙了,特地在21ic求助,希望有过这方面的经验的大侠指导下,我不胜感激!以下 是我的 串口 初始化 波特率是9600:
         U0CTL  = SWRST;// Set the reset bit to hold inactive

    if(Baudrate==9600)
    {
       #if UCLK==SMCLK_8M

  UBR00 = 0x41;                        // 32k/2400 - 13.65

  UBR10 = 0x03;                        // 32k/2400

  UMCTL0 = 0x00;                       // modulation

  UTCTL0 |= SSEL1+SSEL0;               // UCLK = SMLK
       #else
          //程序 运行一段时间后(有时几天 有时个把月),那个串口就死了

  UBR00 = 0x03;                        // 32k/9600 - 3.41

  UBR10 = 0x00;                     

  UMCTL0 = 0x4A;     

  UTCTL0 |= SSEL0;                     // UCLK = ACLK  选择ACLK,在LPM3.可激活

  UTCTL0 &=~SSEL1;
       #endif
    }
    else if(Baudrate==57600)
    {

U0BR0  = 0x8A;                        // Prescale divisor = 0x008A

U0BR1  = 0x00;

U0MCTL = 0xFF;                        // Modulation 11111111
         UTCTL0 |= SSEL1+SSEL0;                // UCLK = SMLK
    }


    U0CTL  = SWRST+CHAR;   // P=none, 8 bits, 1 stop
    U0RCTL = 0;            // wake on all correct rx
    ME1   |= URXE0 +UTXE0; // Enable the module
    P2SEL |= 0x30;         // P2.4,5 special function
    P2DIR |= 0x10;         // P2.4   TX output
    P2DIR &= ~0x20;        // P2.5   RX input
    U0CTL &= ~SWRST;       // Release the UART to operation
    IE1   |= URXIE0;       // RXINT enable

相关帖子

沙发
tianm| | 2012-11-26 09:40 | 只看该作者
检查程序 正常的话不用重新初始化串口

使用特权

评论回复
板凳
lw30402048|  楼主 | 2012-11-26 09:45 | 只看该作者
2# tianm
嗯 我也知道检查程序,你知道大概哪里出现这问题吗?谢谢

使用特权

评论回复
地板
hdsxjtu| | 2012-11-29 15:37 | 只看该作者
这是你的初始化函数,请问你在主函数里的发送程序呢?

使用特权

评论回复
5
hdsxjtu| | 2012-11-29 15:39 | 只看该作者
程序中有没有进入低功耗,SMCLK选的是哪一个时钟源,DCO还是高频,波特率是多少?

使用特权

评论回复
6
hdsxjtu| | 2012-11-29 15:40 | 只看该作者
任何一种低功耗模式下,SMCLK will be shut down 

使用特权

评论回复
7
hdsxjtu| | 2012-11-29 15:40 | 只看该作者
我用的是MSP430FG4619

使用特权

评论回复
8
lw30402048|  楼主 | 2012-11-30 10:59 | 只看该作者
5# hdsxjtu 用的是DCO,通过 外部 32768 倍频到8M的,串口时钟选的是 SMCLK

使用特权

评论回复
9
lw30402048|  楼主 | 2012-11-30 14:03 | 只看该作者
有人 发现 上面的配置 是否有 问题呢?

使用特权

评论回复
10
lw30402048|  楼主 | 2012-11-30 14:06 | 只看该作者
U0CTL  = SWRST+CHAR;   // P=none, 8 bits, 1 stop

这个 是不是要放在 最前面?

使用特权

评论回复
11
zhoumingzr| | 2012-11-30 15:33 | 只看该作者
代码我看不出问题 看看配置

使用特权

评论回复
12
cnsk2012| | 2012-11-30 16:11 | 只看该作者
仔细看看。。。

使用特权

评论回复
13
huanghongxing| | 2012-11-30 16:42 | 只看该作者
看代码看了这么长时间,想不明白会出这问题,总觉得在main函数内定义就好了

使用特权

评论回复
14
smilingangel| | 2012-12-3 12:03 | 只看该作者
楼主看下你的监测线的,有可能是接触不好的

使用特权

评论回复
15
永远的不知| | 2012-12-3 12:26 | 只看该作者
楼主是什么产品?会不会有震动,造成串口接触不好了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

140

帖子

1

粉丝