基本信息
文件名称:NIOSTIMER中断的相关笔记.docx
文件大小:31.06 KB
总页数:6 页
更新时间:2025-05-20
总字数:约3.88千字
文档摘要

NIOS?TIMER中止相关笔记

NIOSTIMER中止试验

一、开发环境及试验目

(1)、开发环境:

硬件:DE2—70开发板

软件:QuartusII9.0sp2WebEdition

NIOSIIEDC9.0NIOSIDE

(2)、试验目:

深入了解TIMER中止,学会写TIMER中止函数,学会调用TIMER中止

二、相关知识、资料

(1)状态寄存器:status:

TO:计数器递减至0时置1,并保持,直到软件修改为0

RUN:定时器运行时为1,停止时为0,不能被软件改写

(2)控制寄存器(control):

ITO:若为1则TIMER递减至0时发出中止,不然中止被屏蔽

CONT:为1时定时器连续工作,为0时定时器只工作一次

Start、stop:分别用来开启定时器和停止定时器,只需置1,不能同时置1

(3)周期计数器:PeriodlPeriodh

(4)定时器快照寄存器:(SnaplSnaph)

NIOS中访问定时器

头文件:

Altera_Avalon_timer_regs.h

该文件:

1、读写状态寄存器:

IORD_ALTERA_AVALON_TIMER_STATUS(base)

IOWR_ALTERA_AVALON_TIMER_STATUS(base,data)

2、读写控制寄存器:

IORD_ALTERA_AVALON_TIMER_CONTROL(base)

IOWR_ALTERA_AVALON_TIMER_CONTROL(base,data)

3、读写周期寄存器

IORD_ALTERA_AVALON_TIMER_PERIODL(base)

IOWR_ALTERA_AVALON_TIMER_PERIODL(base,data)

IORD_ALTERA_AVALON_TIMER_PERIODH(base)

IOWR_ALTERA_AVALON_TIMER_PERIODH(base,data)

4、读写计数器快照寄存器

IORD_ALTERA_AVALON_TIMER_SANPL(base)

IOWR_ALTERA_AVALON_TIMER_SANPL(base,data)

IORD_ALTERA_AVALON_TIMER_SANPH(base)

IOWR_ALTERA_AVALON_TIMER_SANPH(base,data)

三、试验内容(内容为大量截图新浪博客不方便上传,懒上传了,仅上传NIOS源程序)

#includestdio.h

#includesys/unistd.h

#includeio.h

#includestring.h

#includesystem.h

#includealtera_avalon_pio_regs.h

#includealtera_avalon_timer_regs.h

#includealt_types.h

#includesys/alt_irq.h

staticvoidTimer_ISR_Init(void);//setinterrupter

alt_u8i=0;

intmain(void)

{

printf(\nmainfunction!\n);

Timer_ISR_Init();//setinterrupterfunction

while(1)

{

usleep(10000);

}

return0;

}

//Timer1

alt_u8LED1=0;

staticvoidTimer1_Irq_Handler(void*context,alt_u32id)

{

printf(\nTimers1INTERRUPT!\n);

LED1++;

IOWR_ALTERA_AVALON_PIO_DATA(LED1_BASE,LED1);

IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER1_BASE,0);

IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER2_BASE,0x07);

}

//Timer2

alt_u8LED2=0;

alt_u8K;

alt_u32Timer_Prd[]=12500000