MSP430串口接收数据,只进接收中断一次

2019-07-23 14:27发布

发送字符串:5F0600000200005B510600000C0000060100011603290728004E5F060000030000FEA4
为什么只能进中断一次 ,第二次再发就进不了中断了?而关闭串口助手,再次打开就又可以进中断一次。



#include  <msp430x16x.h>

unsigned char RecBuf[35]; //接收数据缓存
unsigned char Rindex;     //接收数据计数
unsigned char Rinflag;    //接收血糖数据包完毕标志
/*******************************************************/
void Uart_init(void);
/*******************************************************/
void Uart_init(void)
{
    P3SEL |= 0x30;                            // 选择P3.4TX和P3.5RX做UART通信端口
    ME1 |= UTXE0 + URXE0;                     // 使能USART0的发送和接受
    UCTL0 |= CHAR;                            // 选择8位字符
    UTCTL0 |= SSEL1;                          // UCLK = SMCLK时钟源选择8M
    UBR00 = 0x8A;                             // 波特率57600设定
    UBR10 = 0x00;                             //
    UMCTL0 = 0xDE;                            // Modulation
    UCTL0 &= ~SWRST;                          // 初始化UART状态机
    IE1 |= URXIE0;                            // 使能USART0的接收发送中断
}
/*******************************************************/
void main(void)
{
    WDTCTL = WDTPW + WDTHOLD;              // 关闭看门狗
    volatile unsigned int i;
    BCSCTL1 &= ~XT2OFF;                       // XT2on
    do
     {
      IFG1 &= ~OFIFG;                        // Clear OSCFault flag
      for (i = 0xFF; i > 0; i--);            // Time for flag to set
     }
    while ((IFG1 & OFIFG));                   // OSCFault flag still set
    BCSCTL2 |= SELM_2 + SELS;                 // MCLK = SMCLK = XT2 (safe)
   
    Uart_init();
   
    while(1)
    {
     _BIS_SR(LPM0_bits+GIE);
     //IE1 |= URXIE0;                            // 使能USART0的接收发送中断
    }
}

#pragma vector = UART0RX_VECTOR
__interrupt void UART0_RXISR(void)
{
    RecBuf[Rindex++] = RXBUF0;
    if(RecBuf[Rindex-2]==0xFE) //接收完毕
    {
        Rindex=0;
        if(RecBuf[0]==0x5F)    //帧头正确
        {
          Rinflag=1;  
        }
    }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
baiyu00747
1楼-- · 2019-07-25 17:00
 精彩回答 2  元偷偷看……
dirtwillfly
2楼-- · 2019-07-25 19:46
baiyu00747 发表于 2016-3-26 14:37
手边现在没有示波器唉 这个现在就是上学 没有正式的实验室

买个30元左右的逻辑分析仪就行,对调试通讯很有用
51xlf
3楼-- · 2019-07-25 23:32
使用软件清除标志位
51xlf
4楼-- · 2019-07-26 05:08
看看电路设计的是不是符合要求
FireRiver9
5楼-- · 2019-07-26 07:36
每次都是中断一次吗,中断标志位清除掉了吗
bobde163
6楼-- · 2019-07-26 12:30
 精彩回答 2  元偷偷看……

一周热门 更多>