首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

讨论usleep函数在for循环中的问题 请高手指教

讨论usleep函数在for循环中的问题 请高手指教

晚上写了个跑马灯的小程序(led灯顺序亮起 无限循环), 如下:

#include "system.h"
#include "altera_avalon_pio_regs.h"

int main(void)
{
    int number = 1;
    int i = 0;
    while(1){
        for(i=0;i < 8;i++)
        {
            IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE,number);
            number *= 2;
            usleep(500000);
        }
        number = 1;
    }
  /*  while(1){
        IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE,number);
        number *= 2;
        i++;
        if(i == 8){
            i = 0;
            number = 1;
        }
        usleep(500000);
    }*/
    return 0;
}

值得注意的是程序中注释和未注释的部分 如果用注释部分的代码则可以得到完美的显示, 而用未注释部分的代码则只能循环一次~ 单步调试 发现程序没有问题 但是只能循环一遍,  然后试着把usleep函数中的参数从500000该成50000,无限循环就可以实现了 显然问题出在usleep函数上 请各位高手指点~

返回列表