微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > 串口IFG2值什么情况下会变成这样子?

串口IFG2值什么情况下会变成这样子?

时间:10-02 整理:3721RD 点击:

我做无线串口实验时。通过复制TI的代码串口那部分。在进行串口发送时,不能发送。通过仿真能看到IFG2值由0xA0→0xCA→0x08之后再也不变化了,程序因此卡在了判断TX是否空闲的那时候。

赴部分程序:

void init_uart0(void)
{
  P1SEL = BIT1 + BIT2 ;                     // P1.1 = RXD, P1.2=TXD
  P1SEL2= BIT1 + BIT2 ;                     // P1.1 = RXD, P1.2=TXD
  UCA0CTL1 |= UCSSEL_1;                     // CLK = ACLK
  UCA0BR0 = 0x03;                           // 32kHz/9600 = 3.41
  UCA0BR1 = 0x00;                           //
  UCA0MCTL = UCBRS1 + UCBRS0;               // Modulation UCBRSx = 3
  UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
//  IE2 |= UCA0RXIE;                          // Enable USCI_A0 RX interrupt
}

void   R_S_Byte(char R_Byte)
{
  while (!(IFG2&UCA0TXIFG));                // USCI_A0 TX buffer ready? 等待TX buffer为空
  UCA0TXBUF =R_Byte;;
}

这是啥情况呢?

建议软件相关的问题发到MCU版本去,那边的同事更熟悉。

可能是因为你把中断使能注释掉了:

//  IE2 |= UCA0RXIE;   

打开应该就可以了。

建议将串口发送程序放入中断程序中进行发送及判断是否完成发送,采用查询方式不太好。但是也应该能完成发送的。发送第一个字节时可以直接发送,不用判断发送缓冲器是否为空。也可先清空发送缓冲器再装载开始发送

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top