OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5969|回复: 5

真心求助MSP430的串口问题,调了一周没调通,快哭了。

[复制链接]

3

主题

12

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2015-3-27
在线时间
0 小时
发表于 2015-4-10 16:46:58 | 显示全部楼层 |阅读模式
int main(void)
{       
    WDTCTL = WDTPW + WDTHOLD;  //关闭看门狗
    Init_CLK();     //初始化时钟
    Init_Port();
    Init_UART();
    Init_IIC();    //IIC初始化
    MPU9255_Init();    // //MPU9255初始化
    _EINT();  //打开全局中断控制  
    while(1)
        {
                MPU9255ReadAcc(Accel);
                Uart_Putchar(Accel[0]);
                Uart_Putchar(Accel[1]);
                Uart_Putchar(Accel[2]);
                MPU9255ReadGyro(Gyro);
                Uart_Putchar(Gyro[0]);
                Uart_Putchar(Gyro[1]);
                Uart_Putchar(Gyro[2]);
        }       
}
void Init_UART()
{
  UCA0CTL0 = 0;
  UCA0CTL1 |= UCSWRST;                      // Set SW Reset
  UCA0CTL1 |= UCSSEL_2;                         // Use SMCLK
  UCA0BR0 = 0xA0;                             // 4MHz/416=9600KHz
  UCA0BR1 = 0x01;                             //9600
  UCA0MCTL=0xC0;
  3SEL |= 0x30;                      //P3.1 3.3作为IIC的SDA和SCL端口,P3.4 P3.5作为调试串口的TXD和RXD端口
  3DIR |= BIT4;
  3DIR &=~BIT5;                      //Setting P3.5 input
  UCA0CTL1 &= ~UCSWRST;                     // Resume operation
  IFG2 &=~UCA0TXIFG;        //因为UCA0TXIFG默认为1,如果不置0,下面的发送中断使能会直接进入中断函数
  __bis_SR_register(GIE);        
}
void Uart_Putchar(unsigned char c)
{

while((IFG2 & UCA0TXIFG));  //待发送为空
  UCA0TXBUF=c;
  IE2 |= UCA0TXIE;
}




#pragma vector = USCIAB0TX_VECTOR  
__interrupt void USCIAB0TX_ISR(void)
{
  IFG2 &=~UCA0TXIFG;
  IE2 &= ~UCA0TXIE;
}
目的很简单,就是把Accel,Gyro里面的数据通过串口发送到PC机显示出来,是不是我对430串口的理解不到位,欢迎各位批评指正。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-4-10 20:04:13 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
23
金钱
23
注册时间
2014-12-10
在线时间
0 小时
发表于 2015-10-14 18:20:25 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
putchar中的IE2 |= UCA0TXIE;不要
串口初始化的发送中断和开中断都不要。
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
23
金钱
23
注册时间
2014-12-10
在线时间
0 小时
发表于 2015-10-14 18:21:26 | 显示全部楼层
回复【3楼】lxt_2005:
---------------------------------
你的程序中看不出你究竟是想查询发送还是中断发送。中断发送不是那样写
回复 支持 反对

使用道具 举报

21

主题

146

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
467
金钱
467
注册时间
2013-7-12
在线时间
86 小时
发表于 2015-10-22 21:49:46 | 显示全部楼层
#include <msp430x14x.h>

int main(void)
{
  volatile unsigned int i;
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  3SEL |= 0x30;                            // 3.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 = 0x74;                             // 3.58Mhz/9600 - 372
  UBR10 = 0x01;                             //
  UMCTL0 = 0x00;                            // no 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
}
回复 支持 反对

使用道具 举报

21

主题

146

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
467
金钱
467
注册时间
2013-7-12
在线时间
86 小时
发表于 2015-10-22 21:51:16 | 显示全部楼层
IFG2是串口1的吧
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 18:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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