打印

串口调试问题

[复制链接]
1510|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
someonewho|  楼主 | 2012-9-30 11:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
someonewho|  楼主 | 2012-9-30 11:21 | 只看该作者
#include <msp430x14x.h>
#include "Config.h"                     //开发板配置头文件,主要配置IO端口信息
//***********************************************************************
//               MSP430IO口初始化
//***********************************************************************
void Port_Init()
{
  LED8SEL  = 0x00;                      //设置IO口为普通I/O模式,此句可省
  LED8DIR  = 0xFF;                      //设置IO口方向为输出
  LED8PORT = 0xFF;                      //P2口初始设置为FF
  
  DATASEL  = 0x00;                      //设置IO口为普通I/O模式,此句可省
  DATADIR  = 0xFF;                      //设置IO口方向为输出
  DATAPORT = 0xFF;                      //P4口初始设置为FF
  
  CTRSEL  =  0x00;                      //设置IO口为普通I/O模式,此句可省
  CTRDIR |=  BIT3 + BIT4;               //设置IO口方向为输出,控制口在P63,P64
  CTRPORT =  0xFF;                      //P6口初始设置为FF  
}
//*************************************************************************
//               MSP430串口初始化
//*************************************************************************
void UART_Init()
{
  U0CTL|=SWRST + CHAR;                //复位SWRST,8位数据模式
  U0TCTL|=SSEL1;                      //SMCLK为串口时钟
  U0BR1=baud_h;                       //BRCLK=8MHZ,Baud=BRCLK/N
  U0BR0=baud_l;                       //N=UBR+(UxMCTL)/8
  U0MCTL=0x00;                        //微调寄存器为0,波特率9600bps
  ME1|=UTXE0;                         //UART0发送使能
  ME1|=URXE0;                         //UART0接收使能
  U0CTL&=~SWRST;
  IE1|=URXIE0;                        //接收中断使能位
  
  P3SEL|= BIT4 + BIT5;                //设置IO口为第二功能模式,启用UART功能
  P3DIR|= BIT4;                       //设置TXD0口方向为输出
}
//*************************************************************************
//              串口0发送数据函数
//*************************************************************************
void Send_Byte(uchar data)
{
  while(!(IFG1&UTXIFG0));          //发送寄存器空的时候发送数据
    U0TXBUF=data;
}
//*************************************************************************
//              串口0发送字符串函数
//*************************************************************************
void Print_Str(uchar *s)
{
    while(*s != '\0')
    {
        Send_Byte(*s++);
    }
}
//*************************************************************************
//               处理来自串口0的接收中断
//*************************************************************************
#pragma vector=UART0RX_VECTOR
__interrupt void UART0_RX_ISR(void)
{
  uchar data=0;
  data=U0RXBUF;                       //接收到的数据存起来
  Send_Byte(data);                    //将接收到的数据再发送出去
}
//*************************************************************************
//           主函数
//*************************************************************************
void main(void)
{
  WDT_Init();                         //看门狗设置
  Clock_Init();                       //系统时钟设置
  UART_Init();                        //串口设置初始化
  Close_LED();                        //关闭数码管显示
  Print_Str("DM430-A Board UART Test...\n");             //发送字符串测试
  _EINT();                            //开中断
  while(1)                            //无限循环
    {
    }
}

使用特权

评论回复
板凳
wrigleymint| | 2012-9-30 20:24 | 只看该作者
= = 貌似没人来呢

使用特权

评论回复
地板
mentoscui| | 2012-9-30 20:34 | 只看该作者
:sleepy:楼主好悲剧

使用特权

评论回复
5
zhl100| | 2012-10-6 19:14 | 只看该作者
一般中断里需要一个清除中断标志的语句……

使用特权

评论回复
6
happy啦啦啦| | 2012-10-10 20:56 | 只看该作者
楼主没清标志吧

使用特权

评论回复
7
figo20042005| | 2012-10-10 21:57 | 只看该作者
上面说的,LZ可以试试下了

使用特权

评论回复
8
hawksabre| | 2012-10-12 18:29 | 只看该作者
在驱动中标志位没有发现   同时中断调用函数有问题   你再仔细推敲推敲   谢谢   你再看看别人的意见   这个问题   我把握不大  没能帮到楼主   对不住

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

97

主题

1150

帖子

1

粉丝