UART功能中的接受数据问题:麻烦了。谢谢

2019-03-24 15:42发布

在串口通信中,TI例程上的程序是进入休眠状态,一旦接受数据,中断执行命令,但是现在在程序运行过程中,现在想要接收的数据与规定的数据进行比较。但是数据还没有接收,直接就进行比较了。郁闷,求助一下。。谢谢了
例程
程序------》休眠-------》中断接收数据------》存放到数组中
现在目的
程序------》等待接收的数据--------》接收数据完毕--------》比较
但是实际上
程序------》直接比较-------》继续     数组中的数据完全就是程序初始化的。 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
aahellaa
1楼-- · 2019-03-24 21:35
#pragma vector=USART0RX_VECTOR
__interrupt void usart0_rx (void)
{
  string1[j++] = RXBUF0;
  if (j == 3)
  {
    i = 0;
    j = 0;
    if(string1[1]==0x00)
    {

      tag=1;
    }
    else
    {

      tag=2;
    }
    IE1 ^= URXIE0;
  }
}
这是中断部分的程序,
如何能在主程序中保证等待接收数据完成才到下一步。。麻烦了
wstt
2楼-- · 2019-03-25 02:20
< :TI_MSP430_内容页_SA7 --> IE1 ^= URXIE0;这句代码是想实现什么目的呢?
你如果在中断中关了中断使能,在其他地方你还会再打开吗?
deweyled
3楼-- · 2019-03-25 04:41
 精彩回答 2  元偷偷看……
aahellaa
4楼-- · 2019-03-25 05:22
就是说只接收几个字符,后面就不需要了,所以在这里关掉中断,以后需要了再开。
aahellaa
5楼-- · 2019-03-25 10:10
#include  <msp430x14x.h>


void main(void)
{
  int con=1;
  WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog
  P3SEL = 0x30;                             // P3.3,4 = USART0 TXD/RXD

  ME1 |= UTXE0 + URXE0;                     // Enabled USART0 TXD/RXD
  UCTL0 |= CHAR;                            // 8-bit character, SWRST=1
  UTCTL0 |= SSEL0;                          // UCLK = ACLK
  UBR00 = 0x03;                             // 9600 from 1Mhz
  UBR10 = 0x00;                             //
  UMCTL0 = 0x4A;                            // Modulation
  UCTL0 &= ~SWRST;                          // Initialize USART state machine
IE1 |= URXIE0;// + UTXIE0;
// _BIS_SR(LPM3_bits + GIE);   //源程序

/*****修改后的程序******/

_EINT();
  while(1)
  {
   
  }

}

这是主程序,程序没有进入过中断,TI的例程就没问题,主程序不知道该怎么写。。
aahellaa
6楼-- · 2019-03-25 12:27
 精彩回答 2  元偷偷看……

一周热门 更多>

相关问题

    相关文章