注册 登录
查看: 286|回复: 6

[K60] 发现了个奇怪的问题

[复制链接]
发表于 2014-9-21 17:26:12 | 显示全部楼层 |阅读模式
void delay(unsigned int x)
{
    unsigned int y,z;
    for(y=x;y>0;y--)
      for(z=20000;z>0;z--);
}
void main()
{
    gpio_init(PTC0, GPO,1);
    gpio_init(PTA17,GPO,1);
    while(1)
    {        
        gpio_set(PTC0,0);
        gpio_set(PTA17,1);
        delay(1000);

        gpio_set(PTC0,1);
        gpio_set(PTA17,0);
        delay(1000);
    }
}
就这么简单的两个LED互相闪烁的程序,无论我的delay的参数多大或者多小,现象都是两个LED一直亮着根本不闪烁,这是怎么回事?

回复

使用道具 举报

发表于 2014-9-21 17:28:06 | 显示全部楼层
编译器优化了,你的延时函数没生效,直接删掉了.

加上 volatile 修饰。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-21 17:59:42 | 显示全部楼层
廖和悦 发表于 2014-9-21 17:28
编译器优化了,你的延时函数没生效,直接删掉了.

加上 volatile 修饰。

请问修饰哪个?是y z 吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-21 18:01:52 | 显示全部楼层
廖和悦 发表于 2014-9-21 17:28
编译器优化了,你的延时函数没生效,直接删掉了.

加上 volatile 修饰。

发现单步执行的时候进不去主函数
回复 支持 反对

使用道具 举报

发表于 2014-9-21 18:08:33 | 显示全部楼层
六步上篮 发表于 2014-9-21 17:59
请问修饰哪个?是y z 吗?

是啊,yz
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

发表于 2014-9-21 19:17:05 | 显示全部楼层
六步上篮 发表于 2014-9-21 18:01
发现单步执行的时候进不去主函数

优化了,就等效注释了。注释了的代码,当然就不去。
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-21 19:43:24 | 显示全部楼层
虚竹 发表于 2014-9-21 19:17
优化了,就等效注释了。注释了的代码,当然就不去。

嗯  确实是这样
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回列表 返回顶部