3452|4

66

帖子

4

TA的资源

一粒金砂(中级)

楼主
 

求教 TI例程调试出问题 430F24X uart [复制链接]

//******************************************************************************

// MSP430x24x Demo - USCI_A0, Ultra-Low Pwr UART 9600 RX/TX, 32kHz ACLK

 //

 // Description: This program demonstrates a full-duplex 9600-baud UART using

 // USCI_A0 and a 32kHz crystal. The program will wait in LPM3, and receive

// a string1 into RAM, and echo back the complete string.

 // ACLK = BRCLK = LFXT1 = 32768Hz, MCLK = SMCLK = DCO ~1.045Mhz

 // Baud rate divider with 32768Hz XTAL @9600 = 32768Hz/9600 = 3.41

//

//* An external watch crystal is required on XIN XOUT for ACLK *//

 //

                         // MSP430F249 // 

                           -----------------

//                 /|\    |                            XIN|-

//                  |     |                                 | 32kHz

//                     --|RST                XOUT |-

//                       |                                  |

//                       |         P3.4 /UCA0TXD|------------>

 //                      |                                  | 9600 - 8N1

//                       |          P3.5/UCA0RXD|<------------

 //         

 //

B. Nisarga

// Texas Instruments Inc.

 // September 2007

// Built with IAR Embedded Workbench Version: 3.42A

//******************************************************************************

 #include "msp430x24x.h"

char string1[8];

char i;

char j = 0;

 void main(void)

 {

        WDTCTL = WDTPW + WDTHOLD;        // Stop WDT

        P1DIR = 0xFF;                                     // All P1.x outputs

        P1OUT = 0;                                           // All P1.x reset

        P2DIR = 0xFF;                                    // All P2.x outputs

        P2OUT = 0;                                      // All P2.x reset

        P3SEL = 0x30;                                               // P3.4,5 = USCI_A0 TXD/RXD

        P3DIR = 0xFF;                                               // All P3.x outputs

        P3OUT = 0;                                                  // All P3.x reset

        P4DIR = 0xFF;                                                 // All P4.x outputs

        P4OUT = 0;                                                         // All P4.x reset

       UCA0CTL1 |= UCSSEL_1;                              // CLK = ACLK

        UCA0BR0 = 0x03;                                         // 32kHz/9600 = 3.41

        UCA0BR1 = 0x00;                                           //

       UCA0MCTL = UCBRS1 + UCBRS0;               // Modulation UCBRSx = 3

       UCA0CTL1 &= ~UCSWRST;                          // **Initialize USCI state machine**

        IE2 |= UCA0RXIE;                                           // Enable USCI_A0 RX interrupt

          __bis_SR_register(LPM3_bits + GIE);          // Enter LPM3, interrupts enabled }

 

 

 // USCI A0/B0 Transmit ISR

 #pragma vector=USCIAB0TX_VECTOR

__interrupt void USCI0TX_ISR(void)

{

          UCA0TXBUF = string1[i++];          // TX next character

          if (i == sizeof string1)                   // TX over?

         IE2 &= ~UCA0TXIE;                     // Disable USCI_A0 TX interrupt

}

 

 // USCI A0/B0 Receive ISR

#pragma vector=USCIAB0RX_VECTOR

 __interrupt void USCI0RX_ISR(void)

{

          string1[j++] = UCA0RXBUF;

          if (j > sizeof string1 - 1)

            {

              i = 0;

              j = 0;

              IE2 |= UCA0TXIE;                      // Enable USCI_A0 TX interrupt

              UCA0TXBUF = string1[i++]; }

 }

我分析的 格式 N,8,1,9600

程序说的是 发什么 接收窗显示什么

 端口号 我绝对没有错

我的错误状况是

 发送任意字符串后 接收在字节数在自加 接手区无显示 (非十六进制显示)

                               接收在字节数在自加 接收到若干 00 (十六进制显示)

 求教 我哪里出了问题!

 

 

贴个代码 贴的 一个空格没有    手动调了半天

[ 本帖最后由 shirl 于 2011-11-7 21:09 编辑 ]

最新回复

无奇偶校验,8比特模式,停止位是1位。 串口有收到的话,基本可以定位成时钟和显示的问题。 可以用调试器在线调试状态下查看,MSP430到底接收到了什么,这样再定位是单片机接收还是发送的过程中出的问题  详情 回复 发表于 2011-11-8 10:42
 
点赞 关注

回复
举报

5014

帖子

12

TA的资源

裸片初长成(初级)

沙发
 
找到了一个我以前验证过的代码
#include "msp430x24x.h"

char string1[8];
char i;
char j = 0;

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  P1DIR = 0xFF;                             // All P1.x outputs
  P1OUT = 0;                                // All P1.x reset
  P2DIR = 0xFF;                             // All P2.x outputs
  P2OUT = 0;                                // All P2.x reset
  P3SEL = 0x30;                             // P3.4,5 = USCI_A0 TXD/RXD
  P3DIR = 0xFF;                             // All P3.x outputs
  P3OUT = 0;                                // All P3.x reset
  P4DIR = 0xFF;                             // All P4.x outputs
  P4OUT = 0;                                // All P4.x reset
  UCA0CTL1 |= UCSSEL_1;                     // CLK = ACLK
  UCA0BR0 = 0x03;                           // 32kHz/9600 = 3.41
  UCA0BR1 = 0x00;                           //
  UCA0MCTL = UCBRS1 + UCBRS0;               // Modulation UCBRSx = 3
  UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  IE2 |= UCA0RXIE;                          // Enable USCI_A0 RX interrupt

  __bis_SR_register(LPM3_bits + GIE);       // Enter LPM3, interrupts enabled
}

// USCI A0/B0 Transmit ISR
#pragma vector=USCIAB0TX_VECTOR
__interrupt void USCI0TX_ISR(void)
{
  UCA0TXBUF = string1[i++];                 // TX next character

  if (i == sizeof string1)                  // TX over?
    IE2 &= ~UCA0TXIE;                       // Disable USCI_A0 TX interrupt
}

// USCI A0/B0 Receive ISR
#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{
  string1[j++] = UCA0RXBUF;
  if (j > sizeof string1 - 1)
  {
    i = 0;
    j = 0;
    IE2 |= UCA0TXIE;                        // Enable USCI_A0 TX interrupt
    UCA0TXBUF = string1[i++];
  }
}
 
 

回复

5014

帖子

12

TA的资源

裸片初长成(初级)

板凳
 
无奇偶校验,8比特模式,停止位是1位。
串口有收到的话,基本可以定位成时钟和显示的问题。
可以用调试器在线调试状态下查看,MSP430到底接收到了什么,这样再定位是单片机接收还是发送的过程中出的问题
 
 
 

回复

66

帖子

4

TA的资源

一粒金砂(中级)

4
 

回复 板凳 wstt 的帖子

版主来回复 很是激动啊 !
但是 我没发现你的程序和我的有哪里不同!   都是TI给的例程吗
 
 
 

回复

66

帖子

4

TA的资源

一粒金砂(中级)

5
 

AA

搞出来了
程序 是 没问题 的   当然也不是波特率的问题了
串口调试 助手  没用  !  换一个调试  可以的  
那个什么疼的!!!
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
有奖直播报名| TI 面向楼宇和工厂自动化行业的毫米波雷达解决方案
【内容简介】TI 60GHz IWRL6432和 IWRL1432毫米波雷达传感器如何帮助解决楼宇和工厂自动化应用中的感应难题
【直播时间】5月28日(周三)上午10:00
【直播礼品】小米双肩包、contigo水杯、胶囊伞、安克充电器

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

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

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

北京市海淀区中关村大街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
快速回复 返回顶部 返回列表