标题: MSP430F169单片机串口通信不了 求助 [打印本页]

作者: ruopan    时间: 2020-8-11 12:16
标题: MSP430F169单片机串口通信不了 求助
本帖最后由 ruopan 于 2020-8-13 11:41 编辑

芯片:MSP430F169
功能:实现串口与PC通信
问题:建立不了通信

代码如下:

串口配置:
#include "msp430x16x.h"

//串口IO初始化
void USART_GPIO_init(void)
{
  P3DIR|=BIT6;          //P3.4 串口输出
  P3DIR&=~BIT7;         //P3.5串口输入
  P3SEL=0xC0;           //选择外设
}

//串口配置
void USART_config(void)
{
  ME2 |= URXE1 + UTXE1;                 //开启串口1传输和接收
  U1CTL |= CHAR;                // 8位数据位
  U1TCTL |= SSEL1;                       //串口时钟为SMCLK
  U1BR0 |= 0X03;
  U1BR1 |= 0X00;                        //波特率为9200 默认一位停止位
  U1MCTL = 0X4A;
  U1CTL &=~ SWRST;                      //设置完毕清除SWRST USART1开始工作
  IE2 |= URXIE1;                        //开启串口1接收中断
}

#pragma vector=UART1RX_VECTOR
__interrupt void usart1_rx (void)
{
  while(!(IFG2 & UTXIFG1));
  TXBUF1 = RXBUF1;
}


主函数:

void main( void )
{
  WDTCTL = WDTPW + WDTHOLD;
  BASIC_CLOCK();                //初始化时钟
  USART_GPIO_init();
  USART_config();
  _EINT();
  while(1)
  {

  }
}
//基本时钟初始化
void BASIC_CLOCK(void)
{
  unsigned int iq0;
  BCSCTL1&=~XT2OFF;     //基本定时器1 默认关闭T2CLK 开启T2CLK
  do
  {
    IFG1&=~OFIFG;               //默认开启晶振中断 关闭晶振中断
    for(iq0=0xff;iq0>0;iq0--);
  }
  while((IFG1&OFIFG)!=0);      
  BCSCTL2=0x88;         //基本时钟状态寄存器2
}



问题已经解决 :更改如下配置
  U1BR0 |= 0X45;
  U1BR1 |= 0X00;                        //波特率115200 默认一位停止位
  U1MCTL = 0X16;

波特率需要详细计算

作者: f556    时间: 2020-8-11 15:37
串口时钟为SMCLK,BASIC_CLOCK()看不到,建议看一下系统时钟,或者用DCO试试。
430的串口通信重点刚好在时钟配置上,不象51用11.0592晶振方便
作者: ruopan    时间: 2020-8-11 17:12
本帖最后由 ruopan 于 2020-8-11 17:23 编辑
f556 发表于 2020-8-11 15:37
串口时钟为SMCLK,BASIC_CLOCK()看不到,建议看一下系统时钟,或者用DCO试试。
430的串口通信重点刚好在时 ...

时钟配置已经粘贴上去了,大佬慧眼识精查找一下问题吧
作者: ruopan    时间: 2020-8-13 10:14
别沉 顶顶顶 求助大佬




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1