智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2341|回复: 2
打印 上一主题 下一主题

问个msp430f149串口通信的问题

[复制链接]

3

主题

8

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
289
威望
178
贡献
81
兑换币
44
注册时间
2012-2-3
在线时间
15 小时
跳转到指定楼层
1#
发表于 2013-4-21 10:43:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
官方代码有段看不懂,不知道那个波特率9600怎么设置的,还有前面设置的不是LFXT1 的 32768HZ吗,后面怎么是8M了?

//******************************************************************************
//  MSP-FET430P140 Demo - USART0, UART 115200 Echo ISR, HF XTAL ACLK
//
//  Description: Echo a received character, RX ISR used. Normal mode is LPM0,
//  USART0 RX interrupt triggers TX Echo.
//  ACLK = MCLK = UCLK0 = LFXT1 = 8MHz
//  Baud rate divider with 8Mhz XTAL = 8000000/115200 = 0069 (0045h)
//  //* An external 8Mhz XTAL on XIN XOUT is required for ACLK *//
//  //* Min Vcc required varies with MCLK frequency - refer to datasheet *//   
//
//
//                MSP430F149
//             -----------------
//         /|\|              XIN|-
//          | |                 | 8MHz
//          --|RST          XOUT|-
//            |                 |
//            |             P3.4|------------>
//            |                 | 115200 - 8N1
//            |             P3.5|<------------
//
//
//  M. Buccini
//  Texas Instruments Inc.
//  Feb 2005
//  Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.21A
//******************************************************************************

#include  <msp430x14x.h>

void main(void)
{
  volatile unsigned int i;

  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  P3SEL |= 0x30;                            // P3.4,5 = USART0 TXD/RXD
  BCSCTL1 |= XTS;                           // ACLK= LFXT1= HF XTAL

  do
  {
  IFG1 &= ~OFIFG;                           // Clear OSCFault flag
  for (i = 0xFF; i > 0; i--);               // Time for flag to set
  }
  while ((IFG1 & OFIFG));                   // OSCFault flag still set?

  BCSCTL2 |= SELM_3;                        // MCLK = LFXT1 (safe)
  
  ME1 |= UTXE0 + URXE0;                     // Enable USART0 TXD/RXD
  
  UCTL0 |= CHAR;                            // 8-bit character
  UTCTL0 |= SSEL0;                          // UCLK= ACLK
  UBR00 = 0x45;                             // 8MHz 115200
  UBR10 = 0x00;                             // 8MHz 115200
  UMCTL0 = 0x00;                            // 8MHz 115200 modulation
  UCTL0 &= ~SWRST;                          // Initialize USART state machine
  IE1 |= URXIE0;                            // Enable USART0 RX interrupt

  _BIS_SR(LPM0_bits + GIE);                 // Enter LPM0 w/ interrupt
}

#pragma vector=USART0RX_VECTOR
__interrupt void usart0_rx (void)
{
  while (!(IFG1 & UTXIFG0));                // USART0 TX buffer ready?
  TXBUF0 = RXBUF0;                          // RXBUF0 to TXBUF0
}


22

主题

518

帖子

0

精华

版主

Rank: 9Rank: 9Rank: 9

积分
6442
QQ
威望
943
贡献
5041
兑换币
99
注册时间
2008-2-26
在线时间
229 小时
2#
发表于 2013-10-9 20:35:51 | 只看该作者
// ACLK= LFXT1= HF XTAL辅助系统时钟和主系统时钟都是使用了LFXT1,而且是高频模式,估计这个脚接的是8M
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
302
威望
192
贡献
82
兑换币
66
注册时间
2012-4-1
在线时间
14 小时
毕业学校
山东交通学院
3#
发表于 2015-6-4 20:30:54 | 只看该作者
430有两个外部时钟,一个是手表晶振32768,另一个是8Mhz的外部高速晶振,选择的时候就会有区别了。
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-6 00:49 , Processed in 0.044681 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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