📄 pio外部中断.txt
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -