为什么我用的这个程序,每次运行到while ((IFG2 & UTXIFG1) == 0);就停在了这里?是串口配置的问题吗?
/*使用MSP430F149
开发板向和PC机进行串口
通信,
单片机向PC发送字符串
unsigned char TBuf[8]={1,2,3,4,5,6,7,8},
使用串口调试助手接收到的字符串为:01 02 03 04 05 06 07 00 F8*/
#include <msp430x14x.h>
unsigned char TBuff[8]={1,2,3,4,5,6,7,8}; // 发送缓冲区
void USART_Send(unsigned char *pData)
{
unsigned char j;
for(j=0; j<8; j++)
{
TXBUF1 = pData[j]; // 装入发送寄存器
while ((IFG2 & UTXIFG1) == 0); // 判断:发送是否完成
IFG1 &= ~(UTXIFG1);
}
}
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P3SEL |= 0xC0; // P3.6,7 = USART0 TXD/RXD
ME2 |= UTXE1 + URXE1; // Enable USART0 TXD/RXD
UCTL1 |= CHAR; // 8-bit character
UTCTL1 |= SSEL1; // UCLK = ACLK
UBR01 = 0x0D; // 32k/2400 - 13.65
UBR11 = 0x00; //
UMCTL1 = 0x6B; // Modula
tion
UCTL1 &= ~SWRST; // Initialize USART state machine
IE2 |= URXIE1; // Enable USART0 RX interrupt
_EINT(); // interrupt
while(1)
{
USART_Send(TBuff);
}
}
一周热门 更多>