?? isr范例.txt
字號:
/*
* 聲明:本范例源于書籍‘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 + -