2897|8

147

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

谁能给我解释一下这个程序。 [复制链接]

//******************************************************************************
//   MSP430G2xx3 Demo - USCI_A0, 9600 UART Echo ISR, DCO SMCLK
//
//   Description: Echo a received character, RX ISR used. Normal mode is LPM0.
//   USCI_A0 RX interrupt triggers TX Echo.
//   Baud rate divider with 1MHz = 1MHz/9600 = ~104.2
//   ACLK = n/a, MCLK = SMCLK = CALxxx_1MHZ = 1MHz
//
//                MSP430G2xx3
//             -----------------
//         /|\|              XIN|-
//          | |                 |
//          --|RST          XOUT|-
//            |                 |
//            |     P1.2/UCA0TXD|------------>
//            |                 | 9600 - 8N1
//            |     P1.1/UCA0RXD|<------------
//
//   D. Dang
//   Texas Instruments Inc.
//   February 2011
//   Built with CCS Version 4.2.0 and IAR Embedded Workbench Version: 5.10
//******************************************************************************
#include  "msp430g2553.h"

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  BCSCTL1 = CALBC1_1MHZ;                    // Set DCO
  DCOCTL = CALDCO_1MHZ;
  P1SEL = BIT1 + BIT2 ;                     // P1.1 = RXD, P1.2=TXD
  P1SEL2 = BIT1 + BIT2 ;                     // P1.1 = RXD, P1.2=TXD
  UCA0CTL1 |= UCSSEL_2;                     // SMCLK
  UCA0BR0 = 104;                            // 1MHz 9600
  UCA0BR1 = 0;                              // 1MHz 9600
  UCA0MCTL = UCBRS0;                        // Modulation UCBRSx = 1
  UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  IE2 |= UCA0RXIE;                          // Enable USCI_A0 RX interrupt

  __bis_SR_register(LPM0_bits + GIE);       // Enter LPM0, interrupts enabled
}

//  Echo back RXed character, confirm TX buffer is ready first
#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{
  while (!(IFG2&UCA0TXIFG));                // USCI_A0 TX buffer ready?
  UCA0TXBUF = UCA0RXBUF;                    // TX -> RXed character
}

 


       UART,官方的程序,相信很多人看过,主程序基本看懂。我想问中断函数的程序作什么用?USCI_A0 TX没有使能,UCA0TXIFG怎么会置位?还有最户那句,英文注释的方向有没有搞错?

      求解答。

最新回复

发送管脚没有和接收管脚连起来,用的时候自己把发送和接收管脚连起来  详情 回复 发表于 2012-7-29 15:27
 
点赞 关注

回复
举报

147

帖子

0

TA的资源

一粒金砂(高级)

沙发
 
关于UCA0TXIFG我在用户手册上找到原文了.

15.3.15.1 USCITransmitInterrupt Operation
TheUCAxTXIFGinterrupt flag is setbythe transmitter to indicate that UCAxTXBUFis readyto accept
anothercharacter.Aninterrupt requestis generatedif UCAxTXIEandGIEarealsoset.UCAxTXIFGis
automaticallyresetif acharacteris writtento UCAxTXBUF.
UCAxTXIFGis setafteraPUCorwhenUCSWRST=1.UCAxTXIEis resetafteraPUCorwhen
UCSWRST=1.
 
 

回复

147

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
是收到什么发送什么的意思?
 
 
 

回复

147

帖子

0

TA的资源

一粒金砂(高级)

4
 
方向没错,看来我是看懂了~试下插上lunchpad看能不能运行。
 
 
 

回复

147

帖子

0

TA的资源

一粒金砂(高级)

5
 
八位数据位,1位停止位,波特率9600,无校验,COM18,设置都对啊。看不到发送的数据不能返回到串口调试助手,求解释。
 
 
 

回复

14

帖子

0

TA的资源

一粒金砂(中级)

6
 
1.这个范例是把发送管脚和接收管脚连起来用的
2.中断函数的程序用来把接收到的数据再发送出去
3.UCA0TXIFG置位与否与USCI_A0 TX使能与否没有关系,只要发送buffer空了,UCA0TXIFG就会置位。此时如果发送中断打开了,就会产生中断
4.英文注释没有搞错

点评

程序也没有对UCA0STAT赋值啊?是吧  详情 回复 发表于 2012-7-18 10:45
查过用户手册,UCA0STAT寄存器的UCLISTEN默认是0,发送管脚没有和接收管脚连起来的吧?还在?请指教。  详情 回复 发表于 2012-7-18 10:42
 
 
 

回复

147

帖子

0

TA的资源

一粒金砂(高级)

7
 

回复 6楼 Megamind 的帖子

查过用户手册,UCA0STAT寄存器的UCLISTEN默认是0,发送管脚没有和接收管脚连起来的吧?还在?请指教。

点评

发送管脚没有和接收管脚连起来,用的时候自己把发送和接收管脚连起来  详情 回复 发表于 2012-7-29 15:27
 
 
 

回复

147

帖子

0

TA的资源

一粒金砂(高级)

8
 

回复 6楼 Megamind 的帖子

程序也没有对UCA0STAT赋值啊?是吧
 
 
 

回复

14

帖子

0

TA的资源

一粒金砂(中级)

9
 

回复 7楼 挨紧 的帖子

发送管脚没有和接收管脚连起来,用的时候自己把发送和接收管脚连起来
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

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