NIOSTIMER中断的相关笔记_第1页
NIOSTIMER中断的相关笔记_第2页
NIOSTIMER中断的相关笔记_第3页
NIOSTIMER中断的相关笔记_第4页
NIOSTIMER中断的相关笔记_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

NIOS

TIMER中止相关笔记NIOSTIMER中止试验一、开发环境及试验目(1)、开发环境:硬件:DE2—70开发板软件:QuartusII9.0sp2WebEditionNIOSIIEDC9.0NIOSIDE(2)、试验目:深入了解TIMER中止,学会写TIMER中止函数,学会调用TIMER中止二、相关知识、资料(1)状态寄存器:status:TO:计数器递减至0时置1,并保持,直到软件修改为0RUN:定时器运行时为1,停止时为0,不能被软件改写(2)控制寄存器(control):ITO:若为1则TIMER递减至0时发出中止,不然中止被屏蔽CONT:为1时定时器连续工作,为0时定时器只工作一次Start、stop:分别用来开启定时器和停止定时器,只需置1,不能同时置1(3)周期计数器:Periodl&Periodh(4)定时器快照寄存器:(Snapl&Snaph)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源程序)#include<stdio.h>#include<sys/unistd.h>#include<io.h>#include<string.h>#include"system.h"#include"altera_avalon_pio_regs.h"#include"altera_avalon_timer_regs.h"#include"alt_types.h"#include"sys/alt_irq.h"staticvoidTimer_ISR_Init(void);//setinterrupteralt_u8i=0;intmain(void){printf("\nmainfunction!\n");Timer_ISR_Init();//setinterrupterfunctionwhile(1){usleep(10000);}return0;}//Timer1alt_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);}//Timer2alt_u8LED2=0;alt_u8K;alt_u32Timer_Prd[]={25000000,12500000,6250000,3125000};staticvoidTimer2_Irq_Handler(void*context,alt_u32id){printf("\nTimers2INTERRUPT!\n");LED2=(LED2+1)%4;IOWR_ALTERA_AVALON_TIMER_PERIODL(TIMER2_BASE,Timer_Prd[LED2]);IOWR_ALTERA_AVALON_TIMER_PERIODH(TIMER2_BASE,0);IOWR_ALTERA_AVALON_PIO_DATA(LED2_BASE,LED2);K=IORD_ALTERA_AVALON_PIO_DATA(K1_BASE)&0x01;if(K)IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER3_BASE,0x07);elseIOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER3_BASE,0x0a);IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER2_BASE,0);}//Timer3alt_u8LED3=0;staticvoidTimer3_Irq_Handler(void*context,alt_u32id){printf("\nTimers3INTERRUPT!\n");LED3++;IOWR_ALTERA_AVALON_PIO_DATA(LED3_BASE,LED3);IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER3_BASE,0);}staticvoidTimer_ISR_Init(void){printf("\nINTERRUPTerfunction!\n");//timer1IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER1_BASE,0);alt_irq_register(TIMER1_IRQ,NULL,Timer1_Irq_Handler);IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER1_BASE,0x01);//timer2IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER2_BASE,0);alt_irq_register(TIMER2_IRQ,NULL,Timer2_Irq_Handler);IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER2_BASE,0x01);//timer3IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER3_BASE,0);alt_irq_register(TIMER3_IRQ,NULL,Timer3_Irq_Handler);IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER3_BASE,0x01);}(英文太差,写注释写很差,估量就自己能看懂,见笑)四、试验心得:部分资料写在试验前TIMER资料中总结在NIOS中C程序编写所应有格式如上例所表示:在一个时钟初始化中需写以下三句话:1、TIMER状态寄存器设置:开启TIMERIOWR_ALTERA_AVALON_TIMER_STATUS(TIMER1_BASE,0);2、中止注册,函数内为:中止号,空指针,中止函数alt_irq_register(TIMER1_IRQ,NULL,Timer1_Ir

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论