返回信息流要求:当S1按下led左移一位,S2按下led右移一位,S3按下led以250毫秒的速度左移一圈,S4右移一圈,共8个led灯。
然后就有了这一段程序,但是毫无移动现象,求大神指点迷津
#include <stdio.h>
#include <system.h>
#include <io.h>
#include "altera_avalon_pio_regs.h"
#include "sys/alt_irq.h"
unsigned char data;
unsigned char leed;
unsigned int i=0;
void ISR_key(void * context,alt_u32 id);
int main()
{
IOWR_ALTERA_AVALON_PIO_IRQ_MASK(PIO_BUTTON_BASE,0xff);
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_BUTTON_BASE,0xff);
while( alt_irq_register (PIO_BUTTON_IRQ,NULL,ISR_key)!=0 );
IOWR(LED_PIO_BASE,0,0xfe);
while(1)
{
if(data==0x01)
{
leed=IORD_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE);
IOWR(LED_PIO_BASE,0,leed<<1);
data=0xff;
}
if(data==0x02)
{
leed=IORD_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE);
IOWR(LED_PIO_BASE,0,leed>>1);
data=0xff;
}
if(data==0x04)
{
leed=IORD_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE);
for(i=0;i<8;i++)
{
IOWR(LED_PIO_BASE,0,leed<<1);
usleep(250000);
}
data=0xff;
}
if(data==0x08)
{
leed=IORD_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE);
for(i=0;i<8;i++)
{
IOWR(LED_PIO_BASE,0,leed>>1);
usleep (250000);
}
data=0xff;
}
}
return 0;
}
void ISR_key(void * context,alt_u32 id)
{
data=IORD_ALTERA_AVALON_PIO_EDGE_CAP(PIO_BUTTON_BASE);
printf("%d\n",data);
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_BUTTON_BASE,0xff);
}
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #14443同步于 2014/2/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖
求Nios大神指点迷津
CathyFong
2014/2/27镜像同步10 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
把部分代码先注释一下 试试能不能实现第一个要求
如果第一个要求都实现不了 说明你工程方面有问题 或者硬件
如果实现了第一个再实现第二个呗
【 在 CathyFong (小小方) 的大作中提到: 】
: [size=5]要求:当S1按下led左移一位,S2按下led右移一位,S3按下led以250毫秒的速度左移一圈,S4右移一圈,共8个led灯。
: 然后就有了这一段程序,但是毫无移动现象,求大神指点迷津
: #include <stdio.h>
: ...................
http://blog.sina.com.cn/s/blog_bff0927b01014gxc.html
先看看是不是帖子里面的缓存设置问题~如果不是同意ls的做法:先把代码简化,想实现多个功能没成功,就先试试实现最简单的,然后一步步往下走。
我选择的是标准型的CPU,应该不存在缓存问题,至于简化代码,已经尝试了四个小时了,小菜鸟解决不了问题啊
【 在 UniverseJang 的大作中提到: 】
: http://blog.sina.com.cn/s/blog_bff0927b01014gxc.html
: 先看看是不是帖子里面的缓存设置问题~如果不是同意ls的做法:先把代码简化,想实现多个功能没成功,就先试试实现最简单的,然后一步步往下走。
连第一个都实现不了,硬件应该不会有问题,我觉得是我代码的问题,但是没想明白什么问题
【 在 wangxiaobupt 的大作中提到: 】
: 把部分代码先注释一下 试试能不能实现第一个要求
: 如果第一个要求都实现不了 说明你工程方面有问题 或者硬件
: 如果实现了第一个再实现第二个呗
: ...................
【 在 CathyFong 的大作中提到: 】
: 我选择的是标准型的CPU,应该不存在缓存问题,至于简化代码,已经尝试了四个小时了,小菜鸟解决不了问题啊
最简单的也不能实现么?比如说控制某个灯让它固定时间亮灭?
这个应该可以,问题应该出在我while(1)死循环里的代码,但是不知道什么问题
【 在 UniverseJang 的大作中提到: 】
: 最简单的也不能实现么?比如说控制某个灯让它固定时间亮灭?
【 在 CathyFong 的大作中提到: 】
: 这个应该可以,问题应该出在我while(1)死循环里的代码,但是不知道什么问题
最后那个是个外部中断函数?data进入whiel(1)后还能去执行中断函数里面的读操作么?好久没调代码了~都忘得差不多了~
不可以吗?应该可以吧~我对这个没概念啊
【 在 UniverseJang 的大作中提到: 】
: 最后那个是个外部中断函数?data进入whiel(1)后还能去执行中断函数里面的读操作么?好久没调代码了~都忘得差不多了~
【 在 CathyFong 的大作中提到: 】
: 不可以吗?应该可以吧~我对这个没概念啊
一年多没搞这个了~真心不确定啊~你下面是定义了个中断函数么~外部按键有动作就会触发中断?
还有上面的那个while是中断的初始化?