chun2495 发表于 2013-2-19 11:25:03

系统优化前后,usleep和delay延时的问题

我在做IIC总线实验时,操作系统是:uc/OS
自己写的延时函数
void delay(void)
{
    int j;
    for(j=0;j<100;j++);
}

若系统没有优化 (optimization levels 为 none)
则delay或者usleep延时都能满足IIC时序要求

但是系统若进行优化时 (optimization levels 为 -00或 -01 或-02),delay就不行了 只有usleep可以
示意代码如下:
static alt_u8 CTP_read(void)
{
    alt_u8 i, dat = 0;

    IOWR_ALTERA_AVALON_PIO_DIRECTION(CTP_SDA_BASE, IN);
    for(i=0; i<8; i++){
      IOWR_ALTERA_AVALON_PIO_DATA(CTP_SCL_BASE, 1);
      usleep(10);//delay();
      IOWR_ALTERA_AVALON_PIO_DATA(CTP_SCL_BASE, 0);
      dat <<= 1;
      dat |= IORD_ALTERA_AVALON_PIO_DATA(CTP_SDA_BASE);
      usleep(10);//delay();
    }
    return dat;
}
各位大侠谁知道为什么呢?不吝赐教

youkebing 发表于 2013-2-19 11:55:55

加volatile

chun2495 发表于 2013-2-20 09:50:39

youkebing 发表于 2013-2-19 11:55 static/image/common/back.gif
加volatile

哪个加volatile?

youkebing 发表于 2013-2-20 18:11:59

void delay(void)
{
    int volatile j;
    for(j=0;j<100;j++);
}

chun2495 发表于 2013-2-21 10:10:06

youkebing 发表于 2013-2-20 18:11 static/image/common/back.gif
void delay(void)
{
    int volatile j;


加了以后还是不行{:cry:}
页: [1]
查看完整版本: 系统优化前后,usleep和delay延时的问题