"); //-->
继续学习Nios II,进行key中断实验,遇到些问题,需要深入研究。
代码:
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
#include "sys/alt_irq.h"
#include "sys/alt_alarm.h"
#include "unistd.h"
#define led *(volatile unsigned char *) LED_BASE
#define key *(volatile unsigned char *) KEY_BASE
void Key_ISR(void* context, alt_u32 id);
void Key_Init();
//alt_u8 data;
//按键中断服务函数
void Key_ISR(void* context, alt_u32 id)
{
led = key;
while(key != 0xff);
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(KEY_BASE, 0x00); //清中断捕获寄存器
}
//按键中断初始化
void Key_Init()
{
alt_irq_register(KEY_IRQ, 0, Key_ISR); //注册中断函数
IOWR_ALTERA_AVALON_PIO_IRQ_MASK(KEY_BASE, 0xff); //开KEY中断
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(KEY_BASE, 0x00); //清中断捕获寄存器
}
int main(void)
{
Key_Init();
led = 0x55;
while(1);
return 0;
}
效果:按键中断,点亮对应的led
视频:http://v.qq.com/boke/page/b/4/q/b0106bte24q.html
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。