NOS II - Timer定时器

NOS II-Time定时器

简单回忆NIOS II中定时器的使用。

一、定时器的框图

image-20240610180740613

二、定时器寄存器的描述

定时器的寄存器都是16bit的,

偏移量寄存器名称R/W15bit4bit3bit2bit1bit0bit
0Status - 状态寄存器R/W - 可读可写*****runTO
1Control - 控制寄存器R/W***stopstartcontITO
2PeriodL - 周期低16位R/W超时周期-1(位15…0)
3PeriodH - 周期高16位R/W超时周期-1(位31…16)
4SnapL - 快照低16bitR/W计时快照(位15…0)
5SnapH - 快照高16bitR/W计时快照(位31…16)

1、状态寄存器

0bit : TO,这一位表示计时器寄到定时的时间时,这一位就会被置1。

1bit : run,如果为1这表示正在计数,只要在计数,这位就是1,否则为0

2、控制寄存器

0bit :ITO表示是否允许中断,一般都是要允许中断的;

1bit:cont表示是连续的那个单词,表示是否工作在连续工作模式,还是单次工作模式.。即如果置为1,计数完一轮之后再计数第二轮,一直循环计数

2bit:start位,如果这位被置为1,则表示启动定时器;

3bit:stop位,如果是1这表示定时器IP停止工作;

3、周期寄存器

用于配置要计数多久

4、快照寄存器

用于查看当前计数到哪里了

三、中断操作

只要内部计数器减到且控制寄存器对的ITO位设置位1,定时器内核就会产生IRO。用户要用以下的任意一种方式应答IRQ:

  • 清除状态寄存器的TO位,等待下一个超时事件的发生;
  • 通过将控制寄存器的ITO位清0来禁止中断

四、定时器内核的配置选项

image-20240610184835964

五、定时器的软件编程

定时器内核提供硬件对的寄存器访问和HAL层的API函数:

定义内核的寄存器映射并提供硬件设备访问宏定义:
altera_avalon_timer_regs.h
实现了HAL系统库的定时器设备驱动程序:
altera_avalon_time.h
altera_avalon_timer_sc.c
altera_avalon_timer_ts.c
altera_avalon_timer_vars.v

定时器TIMER0的简单应用,配置步骤:

//	定时器的初始化alt_ic_isr_register(TIMER0_IRQ_INTERRUPT_CONTROLLER_ID, TIMER0_IRQ, TIMER0_Interrupts, NULL, 0);//	Timer0中断函数注册,TIMER0_Interrupts是中断服务函数,即计数到时需要执行的任务,用户自己编写IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER0_BASE, 0);//配置控制寄存器		停止Timer0。TIMER0_BASE是定时器的地址IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER0_BASE, 0);//配置状态寄存器		清中断标志IOWR_ALTERA_AVALON_TIMER_PERIODH(TIMER0_BASE, (2500000 >> 16));//配置周期寄存器的高16bit,nios的时钟50MHz,周期是20ns,要计时50ms=50000000ns,50_000_000ns/20ns=2500000次,50MHz的时钟需要计数到250000次才能计数到50msIOWR_ALTERA_AVALON_TIMER_PERIODL(TIMER0_BASE, (2500000 & 0xFFFF));//配置周期寄存器的低16bit	定时时间为50ms//	启动定时器IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER0_BASE, 0x07);//	启动Timer0定时器

对注册中断函数alt_ic_isr_register()的参数进行简单的介绍:

  • TIMER0_IRQ_INTERRUPT_CONTROLLER_ID:是中断控制器标号,从system.h中复制。arm系统中一般有个中断控制器来管理中断,比如串口中断,定时中断等;
  • TIMER0_IRQ:硬件中断号,从system.h中复制
  • TIMER0_Interrupts:中断服务函数
  • NULL:这位参数是指向与设备驱动实例相关的数据结构体
  • 0:flag标志位,保留使用,一般我们置为0就可以;
--晓凡 2024610日于武汉书 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/26173.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年高考作文考人工智能,人工智能写作文能否得高分

前言 众所周知,今年全国一卷考的是人工智能,那么,我们来测试一下,国内几家厉害的人工智能他们的作答情况,以及能取得多少高分呢。由于篇幅有限,我这里只测试一个高考真题,我们这里用百度的文心…

【最新鸿蒙应用开发】——总结ArkUI生命周期

鸿蒙ArkUI相关的生命周期都有哪些? 1. UIAbility生命周期 onCreate、onWindowStageCreate、onForeground、onBackground、onWindowStageDestroy、onDestroy。 onCreate:Create状态为在应用加载过程中,UIAbility实例创建完成时触发,系统会调…

Spring Boot 分片上传、断点续传、大文件上传、秒传,应有尽有

文件上传是一个老生常谈的话题了,在文件相对比较小的情况下,可以直接把文件转化为字节流上传到服务器,但在文件比较大的情况下,用普通的方式进行上传,这可不是一个好的办法,毕竟很少有人会忍受,…

APP需要做等保吗?

在数字化时代,APP已成为我们生活中不可或缺的一部分,它们如同无形的桥梁,连接着现实世界与虚拟世界,为我们提供了前所未有的便利。然而,随着APP的普及,其背后潜藏的安全风险也日益凸显。近年来,…

Java面向对象-Object类的toString方法、equals方法

Java面向对象-Object类的toString方法、equals方法 一、toString二、equals三、总结 一、toString Object的toString方法。 方法的原理: 现在使用toString方法的时候,打印出来的内容不友好。 现在想要知道对象的信息。 出现的问题:子类Stu…

Hbase布隆过滤器

Hbase布隆过滤器 说在前面 重要思想: 1.时间换空间:降低内存使用率 --> 降低数据查询时间 2.空间换时间:提高数据查询速率 --> 保存在内存中

2024北京通信展:聚焦新一代信息通信技术、产品、应用及解决方案

中国国际信息通信展览会(PTEXPO)作为工业和信息化部主办的ICT行业盛会,自1990年创办以来,已走过了三十多年的辉煌历程。三十余载光阴荏苒,PT展以其独特的魅力,不仅成为反映信息通信行业发展新成果的重要窗口…

基于GA遗传算法的多机无源定位系统GDOP优化matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于GA遗传算法的多机无源定位系统GDOP优化matlab仿真。仿真输出GDOP优化结果,遗传算法的优化收敛曲线以及三维空间坐标点。 2.测试软件版本以及运行…

SpringBoot的事务注解

SpringBoot的事务注解 在Spring Boot应用中,事务管理是一个关键的部分,尤其是当涉及到数据库操作时。Spring Boot提供了强大的事务管理支持,使得开发人员可以通过简单的注解来控制事务的边界和行为。本文将介绍如何在Spring Boot中使用事务注…

传感器技术

传感器技术 传感器概述传感器简介传感器的特性线性度灵敏度迟滞重复性传感器的动态特性 步进电动机步进电机的工作原理 传感器概述 传感器简介 传感器:能够感受被测量并按照一定规律转换成可用输出信号的器件或装置。 敏感元件:传感器中能直接感受或响…

Nodejs 第七十六章(MQ进阶)

MQ介绍和基本使用在上一章介绍过了,不再重复 消息:在RabbitMQ中,消息是传递的基本单元。它由消息体和可选的属性组成 生产者Producer:生产者是消息的发送方,它将消息发送到RabbitMQ的交换器(Exchange&…

3 数据类型、运算符与表达式-3.5 字符型数据-3.5.2 转义字符

3.5.2 转义字符 #include <stdio.h>main() {int a, b, c;a 5;b 6;c 7;printf("ab c\tde\rf\n");printf("hijk\tL\bM\n");return 0; }

花键轴类零件加工方法有哪些?

花键轴零件的加工方法 一辆普通中型卡车上约含 30 个花键轴零件, 通常用在离合器、变速器、传动轴总成、差速器、转向总成等位置。 花键轴零件的加工工艺是传统的切削加工和塑形成形加工两种。传统工艺如下的8个主要工序&#xff1a; 下料→锻造毛坯→毛坯加工→外花键加工…

【C语言】青蛙跳台阶问题 - 递归算法(一种思路,针对三种不同的情况)

文章目录 1. 前言2. 题目和分析2.1 代码实现2.2 反思 (重点) 3.题目二&#xff08;变式&#xff09;3.1 分析3.2 代码实现 4. 题目三&#xff08;变式&#xff09;4.1 分析4.2 代码实现 1. 前言 相信大家看到青蛙跳台阶问题时&#xff0c;第一时间就会想到递归。那你知道为什么…

【免杀】C2远控-Loader加载器-动态API调用

目录 创建后门程序站在杀毒程序立场上对后门进行分析例&#xff1a;动态调用VirtualProtect函数 作用:绕过杀毒对导入表的检测定性 创建后门程序 VS新建项目 回调函数加载Loader #include <Windows.h>unsigned char shellcode[] "";void CallBack() {void* p…

FlashBrowser

本例&#xff1a;windows10 下载FlashBrowser 解决flash失效问题&#xff0c;更换浏览器 https://www.flash.cn/ 下载FlashBrowser浏览器

Redis的缓存击穿、缓存穿透和缓存雪崩是什么?怎么预防?

Redis的缓存击穿、缓存穿透和缓存雪崩是什么&#xff1f;怎么预防&#xff1f; 前言缓存击穿定义解决思路实现加锁设置过期时间Lua脚本刷新锁 缓存穿透定义实现 缓存雪崩定义解决思路 总结 前言 最近在CSDN上看到了一篇博客&#xff0c;Redis缓存击穿、雪崩、穿透&#xff01;…

深入理解Vue3.js响应式系统基础逻辑

如果您觉得这篇文章有帮助的话&#xff01;给个点赞和评论支持下吧&#xff0c;感谢~ 作者&#xff1a;前端小王hs 阿里云社区博客专家/清华大学出版社签约作者/csdn百万访问前端博主/B站千粉前端up主 此篇文章是博主于2022年学习《Vue.js设计与实现》时的笔记整理而来 书籍&a…

C++:SLT容器-->stack

C:SLT容器--&#xff1e;stack 1. stack容器2. stack 常用接口 1. stack容器 先进后出&#xff0c;后进先出不允许有遍历行为可以判断容器是否为空可以返回元素的个数 2. stack 常用接口 构造函数 stack<T> stk; // stack采用模板类实现&#xff0c;stack对象的默认构造形…

第1期JAVA社招面试经验月报

面经哥专注互联网社招面试经验分享&#xff0c;关注我&#xff0c;每日推送精选面经&#xff0c;面试前&#xff0c;先找面经哥&#xff5c;面经哥整理了上月30篇面试经历&#xff0c;选取了较为热点高频的面试题供大家参考 基础知识类‍‍‍‍‍ 1、说下双亲委派原则以及类加…