搜索
bottom↓
回复: 6

关于msp430串口发送的问题

[复制链接]

出0入0汤圆

发表于 2010-9-17 10:37:17 | 显示全部楼层 |阅读模式
我是一个初学者,请高手帮我看看这程序有没有问题。串口发送数据时,数据写入发送缓冲区UCA1TXBUF,可是发送标识位一直为0,就是说数据根本没有发送出去,我用示波器也看不到波形。下面是我的部分程序:
#include  "msp430x241x.h"

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)                                      
  {   
    while(1);                               // If calibration constants erased
                                            // do not load, trap CPU!!
  }
  
  
  BCSCTL1 = CALBC1_8MHZ;                    // Set DCOclk
  DCOCTL =  CALDCO_8MHZ;
  P3SEL |= 0xC0;                             // P3.6,7 = USCI_A1 TXD/RXD
  UCA0CTL1 |= UCSSEL_2;                     // SMCLK
  UCA1BR0 =0xA0;                              // 8MHz 19200
  UCA1BR1 =0x01;                              // 8MHz 19200
  UCA1MCTL = UCBRS1;               // Modulation UCBRSx = 1
  UCA1CTL1|=0X20;
  UCA1CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  UC1IE |= UCA1RXIE;                          // Enable USCI_A1 RX interrupt
  
  while(1){
  
  uart_tx(0xaa);
  delay(30);
  }


  void   uart_tx (uchar Output)
{
    while (!(UC1IFG&UCA1TXIFG));// 程序就一直停在这????????
    UCA1TXBUF=Output;
   
}

按理说发送完后UCA1TXIFG应该置位的,可是他一直是0,不知道问题出在哪,希望某位大侠能帮我解决下,挥泪致谢~~~~~~~~~

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

发表于 2010-9-17 11:29:29 | 显示全部楼层
UCA1CTL1|=0X20;  ???

出0入0汤圆

 楼主| 发表于 2010-9-17 11:40:01 | 显示全部楼层
回复【1楼】peterliuzq
-----------------------------------------------------------------------
  首先非常感谢你的回复!
  只是收不到数据,所以我设置接收出错时仍能收到数据,且接收中断标志置位。
  后来我把这一句去掉,运行结果仍一样。

出0入0汤圆

发表于 2010-9-17 13:03:03 | 显示全部楼层
晕,从程序来看你只是不断的发送数据,没有接收,要是接收的话,得加个接收中断函数才可以

算了,给你个例程代码看看吧
#include "msp430x24x.h"

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 = 0x0C0;                            // P3.6,7 = USCI_A1 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
  P5DIR = 0xFF;                             // All P5.x outputs
  P5OUT = 0;                                // All P5.x reset
  P6DIR = 0xFF;                             // All P6.x outputs
  P6OUT = 0;                                // All P6.x reset  
  
  UCA1CTL1 |= UCSSEL_1;                     // CLK = ACLK
  UCA1BR0 = 0x03;                           // 32kHz/9600 = 3.41
  UCA1BR1 = 0x00;                           //
  UCA1MCTL = UCBRS1 + UCBRS0;               // Modulation UCBRSx = 3
  UCA1CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  UC1IE |= UCA1RXIE;                          // Enable USCI_A1 RX interrupt

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

// Echo back RXed character, confirm TX buffer is ready first
#pragma vector=USCIAB1RX_VECTOR
__interrupt void USCI1RX_ISR(void)
{
  while (!(UC1IFG&UCA1TXIFG));               // USCI_A1 TX buffer ready?
  UCA1TXBUF = UCA1RXBUF;                     // TX -> RXed character
}

msp430x24x例程代码ourdev_583785BBWTAA.zip(文件大小:432K) (原文件名:slac149e.zip)

出0入0汤圆

 楼主| 发表于 2010-9-17 13:39:08 | 显示全部楼层
谢谢这位大侠的回复,从你的程序中我得到启发,终于找到原因了,谢谢。。。

出0入0汤圆

发表于 2010-9-17 14:42:52 | 显示全部楼层
开了接收中断 而不写接收中断函数的话

会导致系统复位

出0入0汤圆

 楼主| 发表于 2010-9-21 18:58:49 | 显示全部楼层
如果没有打开P1口的多源中断允许,是不是中断标志位会因为P1口的电平变化有可能置位?我在使用时就遇到这种现象!!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-7 11:18

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表