📄 main.c
字号:
/* Simple demonstration of using the Stripe Interrupt Controller.
* This version sets the interrupt mode to 6 individual interrupts.
*
* 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();
// Delay for 1 second to sample interrupts from the PLD
delay(1);
// 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 PLDINT0_FIQ_PRI:
printf("INT_PLD[0]\r\n");
break;
case PLDINT1_IRQ_PRI:
printf("INT_PLD[1]\r\n");
break;
case PLDINT2_IRQ_PRI:
printf("INT_PLD[2]\r\n");
break;
case PLDINT3_IRQ_PRI:
printf("INT_PLD[3]\r\n");
break;
case PLDINT4_IRQ_PRI:
printf("INT_PLD[4]\r\n");
break;
case PLDINT5_IRQ_PRI:
printf("INT_PLD[5]\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 Mode ***\r\n");
break;
case INT_MODE_FIVE_PRI:
printf("\r\n*** 5-bit Priority Mode ***\r\n");
break;
default:
printf("\r\n*** Unknown Interrupt Mode ***\r\n");
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -