我想在我的程序中添加一个简单的按键中断,实现功能为:f1建按下时在数码管上显‘9’,
f2建按下时显‘6’。f1,f2分别接到了由于产生中断的pio的0和1位上。
程序如下:
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
#include "sys/alt_irq.h"
volatile int edge_capture;
..
static void handle_button_interrupts(void* context, alt_u32 id){
volatile int* edge_capture_ptr=(volatile int*)context;
*edge_capture_ptr=IORD_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_1_BASE);
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_1_BASE,0);
}
static void init_button_pio_1(){
void* edge_capture_ptr=(void*)&edge_capture;
IOWR_ALTERA_AVALON_PIO_IRQ_MASK(BUTTON_PIO_1_BASE,0x1);
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_1_BASE,0x0);
alt_irq_register(BUTTON_PIO_1_IRQ,edge_capture_ptr,handle_button_interrupts);
}
static void handle_button_press(){
switch(edge_capture)
{case 0x1:
IOWR_ALTERA_AVALON_PIO_DATA(SHUMAGUAN_PIO_BASE,0x9);
break;
case 0x2:
IOWR_ALTERA_AVALON_PIO_DATA(SHUMAGUAN_PIO_BASE,0x6);
break;
}
}
int main (void)
{
。。
。。
init_button_pio_1();
while (1) {。。
。。
if(edge_capture!=0)
{
handle_button_press();
}
}
return 0;
}
现在的问题是:当f1键按下时数码管能 显示‘9’但f2按下后毫无反应,请各位高手帮忙分析一下是什么原因??
谢谢!!
[em06]
[此贴子已经被作者于2007-5-24 11:37:42编辑过]
[em04]
多谢版主提醒,刚开始学。。。。改成0x3就对了。
[em04]
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |