打印

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

[复制链接]
904|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 运行中返回值错误  这是一个串口发送程序 有三种发送值 第一次发送值识别不了 就发第二个发送值  第二个发送值识别不了 就发第三个发送值  都识别不了 返回错误

使用特权

评论回复
5
wodedaqianjin|  楼主 | 2014-9-25 11:26 | 只看该作者
wodedaqianjin 发表于 2014-9-25 11:25
retVal = bslReadProgram 运行中返回值错误  这是一个串口发送程序 有三种发送值 第一次发送值识别不了  ...

可是第二次识别了还是发送第三个

使用特权

评论回复
6
wodedaqianjin|  楼主 | 2014-9-25 11:31 | 只看该作者
关于这种返回值逻辑语句有没有其它方法?求教

使用特权

评论回复
7
dirtwillfly| | 2014-9-25 11:41 | 只看该作者
wodedaqianjin 发表于 2014-9-25 11:26
可是第二次识别了还是发送第三个

你的程序第二次发送后还会第三次发送,不管死二次成功没成功

使用特权

评论回复
8
wodedaqianjin|  楼主 | 2014-9-25 11:50 | 只看该作者
dirtwillfly 发表于 2014-9-25 11:41
你的程序第二次发送后还会第三次发送,不管死二次成功没成功

那有没有别的办法来完成这种语句

使用特权

评论回复
9
wodedaqianjin|  楼主 | 2014-9-25 14:20 | 只看该作者
如果两次返回值一样,如何用语句依次执行

使用特权

评论回复
10
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亮
}

使用特权

评论回复
11
someontime| | 2014-9-26 21:33 | 只看该作者
写的不太清楚

使用特权

评论回复
12
specialfrin| | 2014-9-26 22:16 | 只看该作者
不太清楚哪有问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

27

帖子

0

粉丝