|
我在做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;
}
各位大侠谁知道为什么呢?不吝赐教 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|