pio外部中断.txt

来自「nios范例(含源代码)」· 文本 代码 · 共 39 行

TXT
39
字号
#include <stdio.h>
#include <string.h>
#include "altera_avalon_pio_regs.h"
#include "system.h"
#include"sys/alt_irq.h"
#include"priv/alt_busy_sleep.h"
//#define LEDCON 0xff
//#define KEYCON 0xff
//中断服务子程序
static void keydown_interrupts(void* context, int id)
  {
    char get;
    get=IORD_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_BASE);
    IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_BASE,0);
    IOWR_ALTERA_AVALON_PIO_DATA(SEVEN_SEG_PIO_BASE,get);
    printf("button interrupt is occed:%d\n",get);   
  }
//中断初始化
void init_pio(void)
  {
    //初始化输入,输出('1'out,'0'in)
    IOWR_ALTERA_AVALON_PIO_DIRECTION(SEVEN_SEG_PIO_BASE,0xff);
    IOWR_ALTERA_AVALON_PIO_DIRECTION(BUTTON_PIO_BASE,0x00);
    //打开中断('1'中断使能)
    IOWR_ALTERA_AVALON_PIO_IRQ_MASK(BUTTON_PIO_BASE,0xff);
    //清边沿捕捉寄存器
    IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_BASE,0x00);
    //注册中断服务程序
    alt_irq_register(BUTTON_PIO_IRQ,NULL,keydown_interrupts);
  }
  
int main(void)
{
  init_pio();
  for(;;);
  return(0);
}
  
  

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?