这段MSP430程序语句有什么不对呢?

[复制链接]
1192|11
 楼主| wodedaqianjin 发表于 2014-9-25 11:14 | 显示全部楼层 |阅读模式
当第一次retVal = bslReadProgram运行错误后运行retVal = bslReadProgram2,为什么 retVal = bslReadProgram2正确运行后, 还会运行retVal = bslReadProgram3

if( eventFlag == 0 )                    // No events to handle?
      {
        // Enter low-power mode 0 with interrupts enabled
        _BIS_SR(LPM0_bits + GIE);
      }

      if( eventFlag & EVENT_SW1 )
      {
        num=0;
        eventFlag &= ~EVENT_SW1;              // Clear event flag

        LEDPORTOUT &= ~(LED1+LED2);           // Ensure LED3 and LED4 are off

        retVal = 0;                           // Clear return value variable

        bslEntrySeq();                        // BSL entry sequence

        
        if( retVal == 0 )
        {
          retVal = bslReadProgram(0x1000);      // Download program to target BSL
        }

        if( retVal < 0 )                      // Check result
        {
         
          LEDPORTOUT |= LED1;                 // Set LED3 to indicate an error
         
          num=num+1;
         
          if(num==1)
          {
            retVal = bslReadProgram2(0x1000);
          }
         
          num=num+1;
         
          if(num==2)
          {
            retVal = bslReadProgram3(0x1000);
          }
        }
        else
        {
          LEDPORTOUT |= LED2;                 // Set LED4 to indicate success
   
        }
      }
dirtwillfly 发表于 2014-9-25 11:19 | 显示全部楼层

改错题?
程序有很明显的逻辑关系啊:
if(num==1)
          {
            retVal = bslReadProgram2(0x1000);
          }
         
          num=num+1;
         
          if(num==2)
          {
            retVal = bslReadProgram3(0x1000);
          }
dirtwillfly 发表于 2014-9-25 11:20 | 显示全部楼层
不太明白你说的“当第一次retVal = bslReadProgram运行错误后”是什么意思
是这一句执行时错误,还是bslReadProgram函数执行的有错误
 楼主| wodedaqianjin 发表于 2014-9-25 11:25 | 显示全部楼层
dirtwillfly 发表于 2014-9-25 11:20
不太明白你说的“当第一次retVal = bslReadProgram运行错误后”是什么意思
是这一句执行时错误,还 ...

retVal = bslReadProgram 运行中返回值错误  这是一个串口发送程序 有三种发送值 第一次发送值识别不了 就发第二个发送值  第二个发送值识别不了 就发第三个发送值  都识别不了 返回错误
 楼主| wodedaqianjin 发表于 2014-9-25 11:26 | 显示全部楼层
wodedaqianjin 发表于 2014-9-25 11:25
retVal = bslReadProgram 运行中返回值错误  这是一个串口发送程序 有三种发送值 第一次发送值识别不了  ...

可是第二次识别了还是发送第三个
 楼主| wodedaqianjin 发表于 2014-9-25 11:31 | 显示全部楼层
关于这种返回值逻辑语句有没有其它方法?求教
dirtwillfly 发表于 2014-9-25 11:41 | 显示全部楼层
wodedaqianjin 发表于 2014-9-25 11:26
可是第二次识别了还是发送第三个

你的程序第二次发送后还会第三次发送,不管死二次成功没成功
 楼主| wodedaqianjin 发表于 2014-9-25 11:50 | 显示全部楼层
dirtwillfly 发表于 2014-9-25 11:41
你的程序第二次发送后还会第三次发送,不管死二次成功没成功

那有没有别的办法来完成这种语句
 楼主| wodedaqianjin 发表于 2014-9-25 14:20 | 显示全部楼层
如果两次返回值一样,如何用语句依次执行
Unshining 发表于 2014-9-26 16:25 | 显示全部楼层
int num;
for(num=0;num<3;num++)
{
    if(num==0)
    {
           retVal = bslReadProgram(0x1000);
     }
    else if(num==1)
    {
           retVal = bslReadProgram1(0x1000);
     }
    else if(num==2)
    {
           retVal = bslReadProgram2(0x1000);
     }
     if(retVal==0)
     {
          //加入表示成功的语句,比如LED2亮
          break;
      }
}
if(num==3)
{
      //加入表示三次都失败的语句,比如LED1亮
}
someontime 发表于 2014-9-26 21:33 | 显示全部楼层
写的不太清楚
specialfrin 发表于 2014-9-26 22:16 | 显示全部楼层
不太清楚哪有问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

27

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部