llg1234 发表于 2010-8-14 09:49:12

EDK程序求助

我刚开始学EDK,尝试着嵌了一个简单的GPIO核,控制八个灯,下面是我写的程序。
#include"xparameters.h"
#include"xgpio.h"
main()
{XGpio gp_out;
int i=0;
int j=4;
XGpio_Initialize(&gp_out,XPAR_XPS_GPIO_0_DEVICE_ID);
XGpio_SetDataDirection(&gp_out,1,0x00);
while(1)
{
   j=(j+1)%256;
   XGpio_DiscreteWrite(&gp_out,1,j);
          for(i=0;i<999999;i++);
       
}
}
如果我把XGpio_DiscreteWrite(&gp_out,1,j);这个语句的j 换成常数,比如说4,就有与之对应控制的灯灭,但如果j为变量的话如上面所示,8个灯始终常亮,当时以为延时不够,所以for(i=0;i<999999;i++);for(i=0;i<999999;i++);for(i=0;i<999999;i++);for(i=0;i<999999;i++);就多延时了一会,可是结果还是8个灯始终常亮。到底是什么原因呢?请各位高手帮帮我这个菜鸟吧,谢谢

llg1234 发表于 2010-8-14 15:52:56

高手帮帮忙吧!

liu_xf 发表于 2010-11-10 20:56:22

for(i=0;i<999999;i++);
这句可能被优化掉了,实际上没有延时

将int i=0 改成 voiltile int i=0; 可以避免优化
页: [1]
查看完整版本: EDK程序求助