|
void keydowm_Init();
void BUTTON_PRESS();
void keydown(void* context,alt_u32 id);
static void keydown(void* context,alt_u32 id) //中断处理函数
{
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTONS_BASE, 0x00);//清除边沿触发
IRQ_flag++;
}
//BUTTON中断初始化
static void keydown_Init(void)
{
//*edge_capture_ptr=edge_capture;
IOWR_ALTERA_AVALON_PIO_IRQ_MASK(BUTTONS_BASE, 0xFF);//打开中断
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTONS_BASE, 0x00);//清除边沿触发
alt_irq_register(BUTTONS_IRQ_INTERRUPT_CONTROLLER_ID,NULL,keydown);//注册中断函数
}
static void BUTTON_PRESS()
{
while(1)
{
if(0!=IRQ_flag)
IRQ_flag--;
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTONS_BASE, 0x00);//清除边沿触发
BUTTON=IORD_ALTERA_AVALON_PIO_DATA(BUTTONS_BASE)&0xF;
alt_busy_sleep(5000);
BUTTON=IORD_ALTERA_AVALON_PIO_DATA(BUTTONS_BASE)&0xF;
switch(BUTTON)
{
case 0x03: {
SURE=1;
IOWR_ALTERA_AVALON_PIO_DATA(LEDS_BASE,0x3FFF);//按BUTTON2
alt_busy_sleep(5000);
} break;
case 0x05: IOWR_ALTERA_AVALON_PIO_DATA(LEDS_BASE,0x000);break;//按BUTTON1
default: break;
}
BUTTON=0xF;
}
}
int main()
{
keydown_Init();
Timer1_Init();
BUTTON_PRESS();
} |
|