刚从51转到MSP430系列,发现有些难度,现在串口通信都搞不通,各位网友看一下是哪个地方出错了。
程序如下:现在发现就是无法发送:
void main( void )
{
WDTCTL = WDTPW + WDTHOLD;
FLL_CTL1|=SELS+SELM_XT2; //MCLK:XT2;SMCLK:XT2,XT2:4M
do
{
IFG1&=~OFIFG;
Sdelay(0xFF);
}while((FLL_CTL0&XT2OF)==XT2OF);
UCTL0|=SWRST; //Begin Initialize all register
UCTL0|=CHAR; //8bit
UTCTL0=SSEL1; //SMCLK
UBR10=0X01;
UBR00=0XA0; //
UMCTL0=0X57; //Baudrate:9600
U0ME|=UTXE0+URXE0; //ena××e TX and RX
UCTL0&=~SWRST; //for operation
U0IE|=URXIE0+UTXIE0; //RX ,TX interrupt ena××e
P2DIR|=0X10;
P2SEL|=0X30;
P1DIR|=0x32; //P1.1,P1.4,P1.5 output
P1SEL|=0x32; //P1.1 mclk;p1.4 smclk;p1.5 aclk
_EINT();
while(1)
{
while((UTCTL0&0x01)!=0x01);
TXBUF0='a';
}
}
#pragma vector =UART0RX_VECTOR
__interrupt void UartReceive(void)
{
while((U0IFG&BIT7)!=BIT7);
TXBUF0=RXBUF0;
}
#pragma vector = UART0TX_VECTOR
__interrupt void UartTransmit(void)
{
while((UTCTL0&BIT0)!=TXEPT);
TXBUF0='b';
}
shi 449?没时间去调试 初始化子函数有一个 你将就看下
代码:
//*************************************************
//**函数(模块)名称:init_UART
//**功能: 初始化UART
//**输入参数: 无
//**输出参数: 无
//**函数返回值说明:无
//**使用的资源:
//**其它说明:
//*************************************************
void init_UART(void)
{
FLL_CTL0 |= XCAP14PF;
UTCTL0 |= SSEL0; //UCLK = ACLK;
UCTL0 = SWRST+CHAR; //8位数据传输
UBR00 = 0x0d;
UBR10 = 0x00;
UMCTL0 = 0x6b; //波特率为2400
ME1 &= ~(URXE0+UTXE0); //disa××e USART0 的RXD,TXD;
IE1 |= URXIE0; //使能USART0 RX中断;
P2SEL = 0x30; //P2.5用作USART0 的RXD;
P2DIR = 0x10 ; //P2.5为输入状态
}
谢谢楼上的这位网友!
我用的事F449,我的板子没有LFXT1。
我在回去检查一下代码。感觉代码的某个地方犯了一个很小的错误,现在就是检查不出来。
搞定了搞定了!
我的工程没有设置运行环境,一直为simulate,改为emulate后就OK了
搞了这么多天就由于这个低级失误,奶奶的。