[MSP430] MSP430F149的串口通信问题

[复制链接]
2939|4
 楼主| justlxy 发表于 2014-4-11 20:17 | 显示全部楼层 |阅读模式
//我想用这个程序来通过PC机向单片机发送0使板子上的LED灯亮,板子上的LED灯是共阳的!
#include <msp430x14x.h>

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD; // 停止看门狗
  P2DIR = 0XFF;
  P2OUT = 0XFF;
  BCSCTL1 |= XTS;               //LFXT1工作于高速晶振模式
  BCSCTL1 |= DIVA_3;            //辅助时钟8分频,输出时钟频率为8分频
  U0TCTL = SSEL0;                //时钟源选择辅助时钟
  U0BR1 = 0;
  U0BR0 = 0x68;
  U0MCTL = 0x40;                //设置波特率9600
  //我的板子上接的晶振比较奇葩:是8000khz的,以上的波特率设置经过验证,是没有问题的。
  UCTL0 &= ~SWRST; // 初始化UART状态机
  UCTL0 |= CHAR; // 数据格式为8位数据
  ME1 |= UTXE0 + URXE0; // 使能USART0的发送TXD和接受RXD
  IE1 |= URXIE0; // 使能USART0的接收中断,让串口接收到数据后能产生中断
  P3SEL |= 0x30; // 选择P3.4和P3.5做UART通信端口
  P3DIR |= 0x10; // 串口发送数据端口为输出,接收数据端口为输入
  _EINT(); // 整个系统使能中断(开总中断)
  LPM1; // 进入LPM1模式
  while(1);
}

//--------------------------------------------------------------------------------------------------------------
//中断服务函数
//--------------------------------------------------------------------------------------------------------------
#pragma vector = UART0RX_VECTOR
__interrupt void UART0_RXISR(void)
{
  while ((IFG1 & UTXIFG0) == 0);
  //等待UTXIFG0=1,只有UTXIFG0=1才可以将接收缓存器的值写给发送缓存器
  //即:当UTXIFG0=1时,才可以进行数据的发送,
  TXBUF0 = RXBUF0; // 将接收到的数据发送到串口
  P2OUT = TXBUF0;
}
天风立马 发表于 2014-4-11 20:31 | 显示全部楼层
然后呢?

评分

参与人数 1威望 +1 收起 理由
justlxy + 1 赞一个!

查看全部评分

 楼主| justlxy 发表于 2014-4-11 20:53 | 显示全部楼层
然后我自己把问题解决了,是因为我板子上的P2口与BSL下载模块共用,不能用作LED灯显示。
天风立马 发表于 2014-4-11 22:54 | 显示全部楼层
justlxy 发表于 2014-4-11 20:53
然后我自己把问题解决了,是因为我板子上的P2口与BSL下载模块共用,不能用作LED灯显示。 ...

好吧。
郝英俊 发表于 2015-12-22 21:06 | 显示全部楼层
为什么我用这个程序,灯就不能亮
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部