打印

msp430-485串口通信的问题

[复制链接]
4457|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
明天我还来|  楼主 | 2011-10-19 22:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
文件名:main.c
描述:MSP430 RS485示例程序
\*****************************************************************************/#include <msp430x26x.h>
#define DRE_OUT P4DIR |=BIT0  //连接485芯片的DE,RE端口的IO设置为输出
#define DE P4OUT |=BIT0       //设置485芯片处于发送状态
#define RE P4OUT &=~BIT0      //设置485芯片处于接收状态
void Set_UART1(void);
/***********主函数************/
void main(void)
{
  unsigned int i;
  WDTCTL = WDTPW + WDTHOLD;   //关闭开门狗
  BCSCTL3|=(XT2S_2+XCAP_2); //设置XT2为3--16MHZ范围
  BCSCTL1&=~XT2OFF;         //启动TX2
  BCSCTL1|=DIVA_1;          //LFXT1工作在低频模式,ACLK为2分频
   
  do
  {
    IFG1 &=~OFIFG;          //清除振荡器失效标志
    for(i=0xFF; i>0;i--);    //延时,待稳定
  }
  while ((IFG1&OFIFG)!=0); //若振荡器失效标志有效
  /* Select SMCLK = XT2 - MCLK = XT2  */               
  BCSCTL2 |= SELM_2+SELS+DIVS_3;  //MCLK为8MHz,SMCLK为1MHz

  
  DRE_OUT;
  DE;
  Set_UART1();
  
  while(1)
  {
    UCA1TXBUF =0xaa;
    while(!(UC1IFG&UCA1TXIFG));//等待发送结束
    UC1IFG &=~UCA1TXIFG;
  }
}
/*****************************
函数名称:Set_UART1
功能:设置MCU的UART1对应的寄存器
参数:无
返回值:无
******************************/
void Set_UART1(void)
{
  P3SEL |=0xC0;                                 //将P3.6,P3.7选做UART1的通信端口
  
   UCA1CTL1|=UCSWRST; //进入复位状态
   //UC1IE &=~(UCA1TXIE | UCA1RXIE);
   UCA1CTL0=0x00;     //设置为USRT模式,无奇偶效验,8位1停,异步
   UCA1CTL1|=UCSSEL_2;//选择的时钟源为SMLK,无分频
   UCA1BR0=0x68;
   UCA1BR1=0x00;     
   UCA1MCTL=0x40;      //设置波特率为9600
   UC1IFG &=~UCA1TXIFG;       //清除中断标志  
   UCA1CTL1&=~UCSWRST;                  //启动UART1
   UC1IE |= (UCA1TXIE | UCA1RXIE);          //发送or接收中断使能
}
代码是否有错误?串口助手始终收不到数据。单步调试中,UCA1TXBUF实终有数据存在,且UCA1TXIFG无法置位。

相关帖子

沙发
TRUE_ARM| | 2011-10-19 22:38 | 只看该作者
中断和查询不能混在一起用的

使用特权

评论回复
板凳
TI_MCU| | 2011-10-20 09:35 | 只看该作者
楼上说的有理,试试把中断禁用了

使用特权

评论回复
地板
zhanghqi| | 2011-10-20 11:56 | 只看该作者
不知楼主咋样了

使用特权

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

本版积分规则

0

主题

505

帖子

1

粉丝