AC620FPGA NIOS II學習筆記——按鍵中斷

AC620FPGA NIOS II學習筆記——按鍵中斷

github

https://github.com/HaHaHaHaHaGe/Planof2019_half/tree/master/Course_Project/FPGA/class16_NIOSII_PIO_IT

簡介

使用上升沿/下降沿捕獲產設中斷的方式,在中斷服務函數中ToggleLED燈。

Quartus

在這裏插入圖片描述
對引腳邊沿捕獲方式及中斷產生方式進行配置

Eclipse

#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
#include "sys/alt_irq.h"			//使用中斷所必須的頭文件


void key_interrupt(void* p)								//中斷服務函數
{
	static alt_u8 flag = 0;
	IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_0_BASE,0x10);	//清除邊沿觸發的標誌位
	flag = ~flag;
	if(flag)
		IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE,0);		//4個led引腳輸出0
	else
		IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE,0x0f);		//4個led引腳輸出1

}

int main()
{ 
  alt_ic_isr_register(PIO_0_IRQ_INTERRUPT_CONTROLLER_ID,	//中斷配置 
		  	  	  	  PIO_0_IRQ,
					  key_interrupt,						//中斷服務函數
					  0,									//入口參數
					  0);

  IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_0_BASE,0x0f);		//設置IO口方向

  IOWR_ALTERA_AVALON_PIO_IRQ_MASK(PIO_0_BASE,0x10);		//開啓IO口的中斷
  /* Event loop never exits. */
  while (1)
  {

  }

  return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章