MSP430的UART0和UART1有区别没有啊?
/******************************************************程序功能:接收来自PC机的字符,然后重新发送给PC机
-------------------------------------------------------
通信格式:N.8.1,9600
无校验,8个数据位,1个停止位,波特率9600
------------------------------------------------------
测试说明:打开串口调试助手,正确设置通信格式,向学习板
发送一个字符,观察是否收到回发的字符,以及是否
正确
*******************************************************/
#include<msp430x14x.h>
#include"BoardConfig.h"
/********************主函数********************/
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗
//BoardConfig(0xb8); // 关闭数码管、流水灯和电平转换
P3SEL |= 0xc0; // 选择P3.4和P3.5做UART通信端口
ME2 |= UTXE1 + URXE1; // 使能USART0的发送和接受
UCTL1 |= CHAR; // 选择8位字符
UTCTL1 |= SSEL0; // UCLK = ACLK
UBR01 = 0x03; // 波特率9600
UBR11 = 0x00; //
UMCTL1 = 0x4A; // Modulation
UCTL1 &= ~SWRST; // 初始化UART状态机
IE2 |= URXIE1; // 使能USART1的接收中断
while(1)
{
_EINT(); //打开全局中断
LPM1; //进入LPM1模式
while (!(IFG2 & UTXIFG1)); //等待以前的字符发送完毕
TXBUF1 = RXBUF1; //将收到的字符发送出去
}
}
/*******************************************
函数名称:UART0_RXISR
功 能:UART0的接收中断服务函数,在这里唤醒
CPU,使它退出低功耗模式
参 数:无
返回值:无
********************************************/
#pragma vector = UART1RX_VECTOR
__interrupt void UART1_RXISR(void)
{
LPM1_EXIT; //退出低功耗模式
}
=============================================================================================
/******************************************************
程序功能:接收来自PC机的字符,然后重新发送给PC机
-------------------------------------------------------
通信格式:N.8.1,9600
无校验,8个数据位,1个停止位,波特率9600
------------------------------------------------------
测试说明:打开串口调试助手,正确设置通信格式,向学习板
发送一个字符,观察是否收到回发的字符,以及是否
正确
*******************************************************/
#include<msp430x14x.h>
#include"BoardConfig.h"
/********************主函数********************/
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗
//BoardConfig(0xb8); // 关闭数码管、流水灯和电平转换
P3SEL |= 0xc0; // 选择P3.6和P3.7做UART通信端口
ME2 |= UTXE1 + URXE1; // 使能USART1的发送和接受
UCTL1 |= CHAR; // 选择8位字符
UTCTL1 |= SSEL0; // UCLK = ACLK
UBR01 = 0x03; // 波特率9600
UBR11 = 0x00; //
UMCTL1 = 0x4A; // Modulation
UCTL1 &= ~SWRST; // 初始化UART状态机
IE2 |= URXIE1; // 使能USART1的接收中断
while(1)
{
_EINT(); //打开全局中断
LPM1; //进入LPM1模式
while (!(IFG2 & UTXIFG1)); //等待以前的字符发送完毕
TXBUF1 = RXBUF1; //将收到的字符发送出去
}
}
/*******************************************
函数名称:UART1_RXISR
功 能:UART1的接收中断服务函数,在这里唤醒
CPU,使它退出低功耗模式
参 数:无
返回值:无
********************************************/
#pragma vector = UART1RX_VECTOR
__interrupt void UART1_RXISR(void)
{
LPM1_EXIT; //退出低功耗模式
}
==================================================================================================
后面这个uart1的代码,如果单个字符的发送,不会有乱码。发送字符串就丢失字符。
uart0的不论单个,还是字符串,都不会乱码。
求教高手原因。 没学到这啊!! P3SEL |= 0xc0; // 选择P3.4和P3.5做UART通信端口
P3SEL |= 0xc0; // 选择P3.6和P3.7做UART通信端口
这两行程序里相同的设置怎么解释不一样啊?设置一定要准啊 mark 两个程序的寄存器设置的一样,怎么会是2个USART口的通信程序呢? 回复【2楼】wbbxajh
-----------------------------------------------------------------------
不好意思,确实写错了。太马虎了。
页:
[1]