收藏 分销(赏)

NIOSTIMER中断的相关笔记.docx

上传人:精*** 文档编号:9531163 上传时间:2025-03-29 格式:DOCX 页数:6 大小:31.06KB 下载积分:6 金币
下载 相关 举报
NIOSTIMER中断的相关笔记.docx_第1页
第1页 / 共6页
NIOSTIMER中断的相关笔记.docx_第2页
第2页 / 共6页


点击查看更多>>
资源描述
NIOS TIMER中止相关笔记 NIOS TIMER中止试验 一、 开发环境及试验目 (1)、 开发环境: 硬件: DE2—70开发板 软件: Quartus II 9.0sp2 Web Edition NIOS II EDC 9.0 NIOS IDE (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)周期计数器: 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" static void Timer_ISR_Init(void); //set interrupter alt_u8 i=0; int main(void) { printf("\n main function! \n"); Timer_ISR_Init(); //set interrupter function while(1) { usleep(10000); } return 0; } //Timer1 alt_u8 LED1=0; static void Timer1_Irq_Handler(void *context,alt_u32 id) { printf("\n Timers1 INTERRUPT! \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_u8 LED2=0; alt_u8 K; alt_u32 Timer_Prd[] = {25000000,12500000,6250000,3125000}; static void Timer2_Irq_Handler(void *context,alt_u32 id) { printf("\n Timers2 INTERRUPT! \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); else IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER3_BASE,0x0a); IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER2_BASE,0); } //Timer3 alt_u8 LED3=0; static void Timer3_Irq_Handler(void *context,alt_u32 id) { printf("\n Timers3 INTERRUPT! \n"); LED3++; IOWR_ALTERA_AVALON_PIO_DATA(LED3_BASE,LED3); IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER3_BASE,0); } static void Timer_ISR_Init(void) { printf("\n INTERRUPTer function! \n"); //timer1 IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER1_BASE,0); alt_irq_register(TIMER1_IRQ,NULL,Timer1_Irq_Handler); IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER1_BASE,0x01); //timer2 IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER2_BASE,0); alt_irq_register(TIMER2_IRQ,NULL,Timer2_Irq_Handler); IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER2_BASE,0x01); //timer3 IOWR_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状态寄存器设置: 开启TIMER IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER1_BASE,0); 2、 中止注册, 函数内为: 中止号, 空指针, 中止函数 alt_irq_register(TIMER1_IRQ,NULL,Timer1_Irq_Handler); 3、 timer控制寄存器设置: 开启TIMER中止信号发送 IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER1_BASE,0x01); ISR书写: 若在初始化内并没有将TIMER申明为循环工作, 则需要在其中加入重启中止: IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER1_BASE,0);
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服