标题:
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