打印

请教大家一个问题

[复制链接]
1938|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jan2008|  楼主 | 2011-6-3 16:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
switch(Runmode)
  {
    case(0):
       Alarm1_configuration();
       Set_SystemPort();
       USB_Interrupts_Config();
       break;
    case(1):               换成case(2):
         Alarm3_configuration();
        Set_SystemPort();
        USB_Interrupts_Config();
        break;
    case(2):               换成case(1):
      Alarm2_configuration();
      Set_SystemPort();
        USB_Interrupts_Config();
        break;
    case(3):
        GPIO_SetBits(GPIOB,GPIO_Pin_14);
        Alarm3_configuration();
        Set_SystemPort();
        Set_USBClock();
        USB_Init();
        USB_Interrupts_Config();        
        break;
    case(4):
        FLASHBank4_Configuration();
        Set_SystemPort();
        USB_Interrupts_Config();
          break;
    case(5):
        FLASHBank5_Configuration();
        Set_SystemPort();
        USB_Interrupts_Config();
          break;
     case(6):
        Set_SystemPort();
        USB_Interrupts_Config();
          break;
  default:
    break;
  }
上面部分程序在IAR下编译后工作正常,但是换成红色部分(对调)后则编译后程序正作则不正常.DMA就不工作了啊.会是编译器的问题吗?
沙发
IJK| | 2011-6-4 09:49 | 只看该作者
是IAR 的什么版本?
有可能是编译器的问题,可以看看它对应的汇编对不对。
也可以修改代码,把switch,case 改成 if,else if 试试看。

使用特权

评论回复
板凳
jan2008|  楼主 | 2011-6-7 10:04 | 只看该作者
是IAR 5.50的.改成if ,else if也不成.

使用特权

评论回复
地板
seawwh| | 2011-6-7 10:30 | 只看该作者
建议:
1.调整一下优化级别试验一下;
2.统一数据对齐 Pack(n)试验一下;
3.比较一下两者的汇编

使用特权

评论回复
5
pkat| | 2011-6-7 16:12 | 只看该作者
估计是编译器的问题

使用特权

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

本版积分规则

9

主题

26

帖子

0

粉丝