📄 isr
字号:
/*
* 声明:本范例源于书籍‘NiosII软件架构解析’
* 作者:蔡伟纲
* 博客地址: http://NiosII.cublog.cn
*
* 一、功能: 中断演示代码.
*
* 二、相关说明:
* 由于NiosII IDE的ISS(Instruction Set Simulation)支持JTAG_UART和
* 定时器的仿真功能,所以该源码可以运行于ISS模式,无须任何硬件开发板的支持.
*
* 三、运行前提:
* 1. 定时器必须具有周期中断功能;
* 2. 定时器命名为: SYS_CLK_TIMER
*/
#include <stdio.h>
#include "system.h"
#include <sys/alt_irq.h>
#include "altera_avalon_timer_regs.h"
static volatile int Time_Counter = 0;
static void Timer_ISR(void* Base_Address, alt_u32 Interrupt_Level)
{
//清除中断标志位
IOWR_ALTERA_AVALON_TIMER_STATUS((alt_u32)Base_Address, 0);
//累计定时器中断发生次数
Time_Counter++;
}
int main()
{
printf("\nISR Demo!\n");
//设置定时器为自由运行模式
IOWR_ALTERA_AVALON_TIMER_CONTROL(SYS_CLK_TIMER_BASE,
ALTERA_AVALON_TIMER_CONTROL_ITO_MSK |
ALTERA_AVALON_TIMER_CONTROL_CONT_MSK |
ALTERA_AVALON_TIMER_CONTROL_START_MSK);
//开始中断注册操作
alt_irq_register(SYS_CLK_TIMER_IRQ, SYS_CLK_TIMER_BASE, Timer_ISR);
printf("Timer interrupt has occurred for: %d times\n", Time_Counter);
int Old_Value = Time_Counter;
for(;;)
{
if(Old_Value != Time_Counter)
{
Old_Value = Time_Counter;
printf("Timer interrupt has occurred for: %d times\n", Old_Value);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -