打印
[STM8]

IAR编译STM8S的if语句错误

[复制链接]
1712|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
以前都是用的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语句.jpg (148.19 KB )

IAR编译的IF语句

IAR编译的IF语句
沙发
feiguangliuyue|  楼主 | 2015-9-26 11:38 | 只看该作者
大神们给点建议吧,
IAR实在是用不惯,不知道怎么打开实时错误检查...所以码代码都是在visual studio上进行的.
要是有其它人性化的开发工具,也请大神们指点下.

使用特权

评论回复
板凳
戈卫东| | 2015-9-26 11:43 | 只看该作者
被优化给处理掉了。
MCU的程序不做任何有意义的事情,编译器认为是多余和无用的-------它把它们都去掉了。

使用特权

评论回复
地板
戈卫东| | 2015-9-26 11:44 | 只看该作者
把优化调到最低这些代码都会给你保留下来

使用特权

评论回复
5
feiguangliuyue|  楼主 | 2015-9-26 11:47 | 只看该作者
戈卫东 发表于 2015-9-26 11:44
把优化调到最低这些代码都会给你保留下来

不知道怎么设置..才接触IAR.

使用特权

评论回复
6
戈卫东| | 2015-9-26 11:56 | 只看该作者
主菜单Project->Options,左边点C/C++ Compiler,右边点Optimizations,里边有None到High的选择

使用特权

评论回复
7
457344370| | 2015-9-26 14:22 | 只看该作者
声明时试试volatile u8 i,j;

使用特权

评论回复
8
feiguangliuyue|  楼主 | 2015-9-26 14:48 | 只看该作者
戈卫东 发表于 2015-9-26 11:56
主菜单Project->Options,左边点C/C++ Compiler,右边点Optimizations,里边有None到High的选择 ...

谢谢

使用特权

评论回复
9
feiguangliuyue|  楼主 | 2015-9-26 14:48 | 只看该作者
457344370 发表于 2015-9-26 14:22
声明时试试volatile u8 i,j;

谢谢指导.

使用特权

评论回复
10
丁弋宇| | 2015-9-26 14:57 | 只看该作者
哈哈哈,聪明的编译器没明白楼主要干什么

使用特权

评论回复
11
znning| | 2015-9-26 18:41 | 只看该作者
你这i的值都不带改变的,一直都是0。

使用特权

评论回复
12
gejigeji521| | 2015-9-26 22:25 | 只看该作者
被优化给处理掉了。

使用特权

评论回复
13
huangcunxiake| | 2015-9-26 23:15 | 只看该作者
变量类型应该别用自动的,设为易变的比较好。

使用特权

评论回复
14
huangcunxiake| | 2015-9-26 23:16 | 只看该作者
明的编译器没明白楼主要干什么

使用特权

评论回复
15
天灵灵地灵灵| | 2015-9-27 08:58 | 只看该作者
修改类型为容易变坏类型。v开头那个

使用特权

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

本版积分规则

1

主题

8

帖子

0

粉丝