while ((IFG1 & UTXIFG0)==0); 停止怎么解决?

2019-03-24 09:51发布

初始化函数:
void S_Init()
{
P6SEL&=~(SCK+SDA+SVCC);                   //选择P6.3 P6.4 为IO端口输出, P6.5输入
P6DIR|=(SCK+SVCC);
P6DIR&=~SDA;
BCSCTL1=(XT2OFF+RSEL2);             //关闭XT2,1MHz DOC     
DCOCTL=DCO2;                              //设定DCO频率为1MHz
WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
U0CTL |= SWRST;
P3SEL |= 0x30; // 选择P3.4和P3.5做UART通信端口
P3DIR |=BIT4;                             //P3.4为输出方向
ME1 |= UTXE0 + URXE0; // 使能USART0的发送和接受
IE1|=URXIE0;
UCTL0 |= CHAR; // 选择8位字符
UTCTL0 |= SSEL0; // UCLK = ACLK
UBR00 = 0x68; // 波特率9600
UBR10 = 0x00; //
UMCTL0 = 0x11; // Modulation
UCTL0 &= ~SWRST; // 初始化UART状态机
_EINT();
}
/**********************************************************************************************************
**Function Name:     print output
**Description:        
**Input Parameters:   无
**Output Parameters: 无
**********************************************************************************************************/
void put(uchar *x)
{
  while(*x)
  {
    TXBUF0=*x;
    x++;
   while ((IFG1 & UTXIFG0)==0);                // USCI_A0 TX buffer ready?  
    }
}
主程序来输出几个字符的,结果运行的时候到while ((IFG1 & UTXIFG0)==0);           停止不前了,可能初始化部分没设置好,不是很懂,希望高手多多指点下,先在此拜谢啦! 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
lin562794072
2019-03-25 09:32
是TXERT为1时,表示UTXBUF为空!

一周热门 更多>

相关问题

    相关文章