NIOSTIMER中断的相关笔记.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

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

文档评论(0)

知识海洋 + 关注
实名认证
文档贡献者

知识海洋

1亿VIP精品文档

相关文档