📄 main.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 + -