请教大家一个问题

[复制链接]
2691|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.比较一下两者的汇编
pkat 发表于 2011-6-7 16:12 | 显示全部楼层
估计是编译器的问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

26

帖子

0

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