[STM8] IAR编译STM8S的if语句错误

[复制链接]
 楼主| feiguangliuyue 发表于 2015-9-26 11:26 | 显示全部楼层 |阅读模式
以前都是用的Keil,这次为了学习STM8S,开始使用IAR.结果今天写程序的时候发现IAR编译的if语句有问题.

我在主程序的代码如下:
int main( void )
{
  u8 i,j;
  i=0;
  j=0;
  //HSIClock_Set(0x18,0);
  while(1)
  {
    // i=HSEClock_Set(0);     
     if(i==1)
        i++;
     else
       j++;

     j=i+j;
  };

  return 0;
}

编译后的main程序如下:
main:
                            JRA              main
此时的CC寄存器值为0x2a sp值为0x17FD
哪位大神知道怎么解决?是我哪里设置的问题么?

IAR编译的IF语句

IAR编译的IF语句
 楼主| feiguangliuyue 发表于 2015-9-26 11:38 | 显示全部楼层
大神们给点建议吧,
IAR实在是用不惯,不知道怎么打开实时错误检查...所以码代码都是在visual studio上进行的.
要是有其它人性化的开发工具,也请大神们指点下.
戈卫东 发表于 2015-9-26 11:43 | 显示全部楼层
被优化给处理掉了。
MCU的程序不做任何有意义的事情,编译器认为是多余和无用的-------它把它们都去掉了。
戈卫东 发表于 2015-9-26 11:44 | 显示全部楼层
把优化调到最低这些代码都会给你保留下来
 楼主| feiguangliuyue 发表于 2015-9-26 11:47 | 显示全部楼层
戈卫东 发表于 2015-9-26 11:44
把优化调到最低这些代码都会给你保留下来

不知道怎么设置..才接触IAR.
戈卫东 发表于 2015-9-26 11:56 | 显示全部楼层
主菜单Project->Options,左边点C/C++ Compiler,右边点Optimizations,里边有None到High的选择
457344370 发表于 2015-9-26 14:22 来自手机 | 显示全部楼层
声明时试试volatile u8 i,j;
 楼主| feiguangliuyue 发表于 2015-9-26 14:48 | 显示全部楼层
戈卫东 发表于 2015-9-26 11:56
主菜单Project->Options,左边点C/C++ Compiler,右边点Optimizations,里边有None到High的选择 ...

谢谢
 楼主| feiguangliuyue 发表于 2015-9-26 14:48 | 显示全部楼层
457344370 发表于 2015-9-26 14:22
声明时试试volatile u8 i,j;

谢谢指导.
丁弋宇 发表于 2015-9-26 14:57 | 显示全部楼层
哈哈哈,聪明的编译器没明白楼主要干什么
znning 发表于 2015-9-26 18:41 | 显示全部楼层
你这i的值都不带改变的,一直都是0。
gejigeji521 发表于 2015-9-26 22:25 | 显示全部楼层
被优化给处理掉了。
huangcunxiake 发表于 2015-9-26 23:15 | 显示全部楼层
变量类型应该别用自动的,设为易变的比较好。
huangcunxiake 发表于 2015-9-26 23:16 | 显示全部楼层
明的编译器没明白楼主要干什么
天灵灵地灵灵 发表于 2015-9-27 08:58 | 显示全部楼层
修改类型为容易变坏类型。v开头那个
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

8

帖子

0

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