430f149串口调试问题

2019-07-15 16:17发布

我430一打开串口调试,主程序就停了为什么呢

而且每次下载完程序,板子必须关掉重启一下,调试助手才能正常收发,否则收不到,希望大家帮个忙能够解决以下,还有这个串口是232还是485




以下是程序:
#include <msp430x14x.h>
#include "Config.h"
uchar n;
uchar data=0;
//*************************************************************************
//               MSP430串口初始化
//*************************************************************************
void UART_Init()
{
  U0CTL|=SWRST;               //复位SWRST
  U0CTL|=CHAR;                //8位数据模式
  U0TCTL|=SSEL1;              //SMCLK为串口时钟
  // U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N      //在config里有设置   提取高位
  //U0BR0=baud_l;               //N=UBR+(UxMCTL)/8            //在config里有设置   提取低位
  //U0MCTL=0x00;                //微调寄存器为0,波特率9600bps

U0BR0 = 0x41;//波特率9600
U0BR1 = 0x03;                        //有串口波特率计算公式的   
U0MCTL = 0x00;

  ME1|=UTXE0;                 //UART1发送使能
  ME1|=URXE0;                 //UART1接收使能
  U0CTL&=~SWRST;
  IE1|=URXIE0;                //接收中断使能位
// IE1|=UTXIE0;                //发送中断使能位

  P3SEL|= BIT4;               //设置IO口为外围模式
  P3DIR|= BIT4;               //设置IO口方向为输出
  P3SEL|= BIT5;                    //看原理图进行设置。。注意有跳
  P3DIR&=~ BIT5;               //设置IO口方向为输入
}

//*************************************************************************
//              串口0发送数据函数
//*************************************************************************

void Send_Byte(uchar data)
{
  while((IFG1&UTXIFG0)!=0X80);          //发送寄存器空的时候发送数据
    U0TXBUF = data;
}

//*************************************************************************
//               处理来自串口 0 的接收中断
//*************************************************************************

#pragma vector=UART0RX_VECTOR
__interrupt void UART0_RX_ISR(void)
{

  data = U0RXBUF;                       //接收到的数据存起来
   Send_Byte(data);                    //将接收到的数据再发送出去
   delay_ms(5);                        //切换之前先有个小延时  

}

//*************************************************************************
//            处理来自串口 0 的发送中断,预留
//*************************************************************************

//#pragma vector=UART0TX_VECTOR
//__interrupt void UART0_TX_ISR(void)
//{

//}

//*************************************************************************
//           主函数
//*************************************************************************
void main(void)
{
  WDT_Init();                         //看门狗设置
  Clock_Init();                       //系统时钟设置
  UART_Init();                        //串口设置初始化
  _EINT();    //开中断
  P6DIR|= BIT0;
  P6OUT&=~ BIT0;
  while(1)                            //无限循环
    {   
     P6OUT^= BIT0;  
     delay_ms(500);
    }
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。