⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 altera epxa1的例子程序
💻 C
字号:
/*	
*	Simple demonstration of using the Stripe Interrupt Controller.
*	This version sets the interrupt mode to a 6-bit priority scheme.
*
*	Author: ORC
*
* 	Copyright (c) Altera Corporation 2001.
* 	All rights reserved.
*/

#include <stdio.h>
#include "timer.h"
#include "stripe.h"
#include "int_ctrl00.h"
#include "irq.h"

void detect_mode(void);

int buffer[LIMIT], count;

int main(void)
{
	int i;
	
	// Initialize the stripe timer which is used as a stopwatch
	init_timer();
	
	// Detect interrupt mode set by irq_init function
	detect_mode();

	// Enable PLD interrupts
	enable_pld_int();

	// Delay for 1 second to sample interrupts from the PLD
	delay(1);

	// Disable PLD interrupts 
	disable_pld_int();

	// Display interrupts that occurred in the PLD
	for (i = 0; i < count; i++)
	{
		// Don't display interrupts that occurred previously
		if ( buffer[i] != buffer[i-1] )
		{
			switch(buffer[i])
			{
				case INT0_IRQ_PRI:	
					printf("INT0\r\n");
					break;
							
				case INT1_IRQ_PRI:
					printf("INT1\r\n");
					break;	
							
				case INT2_IRQ_PRI:
					printf("INT2\r\n");
					break;	

				case INT3_IRQ_PRI:
					printf("INT3\r\n");
					break;	

				case INT4_IRQ_PRI:
					printf("INT4\r\n");	
					break;	

				case INT5_IRQ_PRI:
					printf("INT5\r\n");
					break;	

				case INT6_IRQ_PRI:
					printf("INT6\r\n");	
					break;	
					
				case INT7_IRQ_PRI:
					printf("INT7\r\n");	
					break;	
					
				case INT8_IRQ_PRI:
					printf("INT8\r\n");
					break;	
										
				default:
					printf("unknown interrupt\r\n");
					break;
					
			} // switch
		} // if			
	} // for
	
	while(1);	
}

// Detect interrupt mode
void detect_mode(void)
{
	volatile unsigned int int_mode;
	
	// Read the Interrupt Mode register
	int_mode = *INT_MODE(EXC_INT_CTRL00_BASE) & INT_MODE_MODE_MSK;
	
	// Print interrupt mode detected
	switch(int_mode)
	{
		case INT_MODE_SIX_IND:
			printf("\r\n*** 6 Individual Interrupt Mode ***\r\n");
			break;
			
		case INT_MODE_SIX_PRI:
			printf("\r\n*** 6-bit Priority Interrupt Mode ***\r\n");
			break;
			
		case INT_MODE_FIVE_PRI:
			printf("\r\n*** 5-bit Priority Interrupt Mode ***\r\n");
			break;
			
		default:
			printf("\r\nUnknown Interrupt Mode\r\n");
			break;
	}
}

⌨️ 快捷键说明

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