nios ii avalon结构中的按键中断如何配置!


direction:input

output register不打勾

Synchronously capture打勾    

Edge Type: FALLING

enable bit-clearing for edge capture register可打可不打,区别见下文

generate IRQ打勾

IRQ Type: EDGE



#include "../files/key.h"


void init_key(void)
{


    KEY->INTERRUPT_MASK = 1;  
    alt_irq_register(PIO_KEY_IRQ,NULL,ISR_key);     //注册中断   
}


void ISR_key(void * context,unsigned long id)
{
    static uchar key_flag=0;
    usleep(200000);//消抖
    if(key_flag==0)
    {
        LED->DATA=0;
        key_flag=1;
    }      
    else
    {
        LED->DATA=1;
        key_flag=0;
    }
    IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_KEY_BASE, 1);//清除中断标志位
/*    同时需要注意若是在SOPC Builder中选择了enable bit-clearing for edge capture register的话,
    那么对于edge capture就应该是写1清中断;若是没有选择enable bit-clearing for edge capture register,
    则是写任意数清中断。*/
}

nios ii avalon结构中的按键中断如何配置!_第1张图片


你可能感兴趣的:(nios ii avalon结构中的按键中断如何配置!)