打印
[FPGA]

一个有关Xilinx microblaze简单语法的问题

[复制链接]
1822|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hjl240|  楼主 | 2014-2-19 10:22 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
       今天试了一下 Xilinx microblaze,写了一个简单的程序,主函数如下:
        while (1)
        {
                XGpio_DiscreteSet(&led,1,0x01);//
                delay_ms(1000);
                XGpio_DiscreteSet(&led,1,0x02);
                delay_ms(1000);

         }
      这个函数(XGpio_DiscreteSe)只对第三个参数中对应位为1的位有影响,上面函数的效果理应当是:首先led0亮,然后led1亮,最后两个发光二极管一直亮着,可是实际效果确是:两个led间隔闪烁。  
     请问这是为什么?还是我有什么地方弄错了?

相关帖子

沙发
hjl240|  楼主 | 2014-2-19 13:58 | 只看该作者
整个程序如下,有什么问题么?为什么现象会是led交替闪烁



使用特权

评论回复
板凳
ococ| | 2014-2-19 15:22 | 只看该作者
while循环一直在点灯啊,当然就交替亮了

使用特权

评论回复
地板
hjl240|  楼主 | 2014-2-19 15:30 | 只看该作者
ococ 发表于 2014-2-19 15:22
while循环一直在点灯啊,当然就交替亮了

XGpio_DiscreteSet不是只对第三个参数对应位为1的位有影响,对其他位没有影响么?
第一句XGpio_DiscreteSet(&led,1,0x01);中的0x01为0000 0001,最后一位为1,所以只将最后一位led置1,其他位的led状态不变,第二句XGpio_DiscreteSet(&led,1,0x02);中的0x02为0000 0010,倒数第二位为1,所以只将倒数第二位led置1,其他位led状态不变,按照这样的逻辑,经过这两句程序,两个led都被置一了,都亮了,而不是循环闪烁,,,这样的想法难道是错的?

使用特权

评论回复
5
zj_456| | 2014-2-27 18:49 | 只看该作者
我不解释为什么,你在while(1)中再添加两句再跑一下,估计你就能明白了

XGpio_DiscreteSet(&led,1,0x03);
delay_ms(1000);
XGpio_DiscreteSet(&led,1,0x0);
delay_ms(1000);

使用特权

评论回复
6
ococ| | 2014-2-28 10:42 | 只看该作者
hjl240 发表于 2014-2-19 15:30
XGpio_DiscreteSet不是只对第三个参数对应位为1的位有影响,对其他位没有影响么?
第一句XGpio_DiscreteS ...

XGpio_DiscreteSet(&led,1,0x01) :中的0x01为0000 0001,最后一位为1,所以只将最后一位led置1,其他位的led状态为0.
XGpio_DiscreteSet(&led,1,0x02);中的0x02为0000 0010,倒数第二位为1,所以只将倒数第二位led置1,其他位led状态为0.

使用特权

评论回复
7
emesjx| | 2015-7-16 00:36 | 只看该作者
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

56

帖子

1

粉丝