MicroBlaze定时器(Timer)的使用
MicroBlaze的Timer IP比较简单易用,一个XPS_TC IP包含两个32bit定时/计数器。工作方式也比较灵活,可以设置中断、自动加载、Count UP/DOWN等模式,每当timer溢出的时候产生中断,进入中断程序后通过写1 clear中断标志位,通常的做法是csr = = XTmrCtr_mGetControlStatusReg(XPAR_MY_TIMER_BASEADDR, 0);然后再“XTmrCtr_mSetControlStatusReg(XPAR_MY_TIMER_BASEADDR, 0, timer_csr);”,这样可以在不影响别的控制位的前提下clear中断标志位。
同样值得注意的是用了XIntc模块,要将timer中断服务程序连接(注册)到XIntc模块上。
使用Timer IP的流程是:
(1)设置Load Regisiter初始值;
(2)设置控制/状态寄存器,包括中断时能、timer使能、COUNT方向、Relaod使能等;
(3)注册中断服务函数;
(4)开MB全局中断和XIntc中断;
(5)等待中断发生。
(6)在中断服务程序中clear中断标志位。
例程(100MHz下,每一秒产生一个中断)
#include "xparameters.h"
#include "xutil.h"
#include "xintc.h"
#include "xtmrctr.h"
void timer_int_handler(void);
unsigned int push_button_times, timer_cnt;
int main()
{timer_cnt = 0;xil_printf("--start the program test---\r\n");XTmrCtr_mSetLoadReg(XPAR_MY_TIMER_BASEADDR, 0, 100000000);XTmrCtr_mSetControlStatusReg(XPAR_MY_TIMER_BASEADDR, 0,XTC_CSR_ENABLE_TMR_MASK | XTC_CSR_ENABLE_INT_MASK |XTC_CSR_AUTO_RELOAD_MASK | XTC_CSR_DOWN_COUNT_MASK);//must enable mb_enable bitmicroblaze_enable_interrupts();//must enable xgpio_interruptglobalenable bit;//register the isrXIntc_RegisterHandler(XPAR_INTC_0_BASEADDR, \XPAR_XPS_INTC_0_MY_TIMER_INTERRUPT_INTR,\(XInterruptHandler)timer_int_handler, \(void *)0);//must enable XIntc_mMasterEnableXIntc_mMasterEnable(XPAR_INTC_0_BASEADDR);//must enable specific interrupt(s) in the interrupt controller.XIntc_mEnableIntr(XPAR_INTC_0_BASEADDR, \XPAR_PUSH_BUTTONS_POSITION_IP2INTC_IRPT_MASK\|XPAR_DIP_SWITCHES_8BIT_IP2INTC_IRPT_MASK\|XPAR_RS232_UART_INTERRUPT_MASK\|XPAR_MY_TIMER_INTERRUPT_MASK);while(1);return 0;
}void timer_int_handler(void)
{unsigned int timer_csr;timer_cnt++;timer_csr = XTmrCtr_mGetControlStatusReg(XPAR_MY_TIMER_BASEADDR, 0);if(timer_csr & XTC_CSR_INT_OCCURED_MASK){xil_printf("--timer interrupt happened times = %d!--\r\n", timer_cnt);XTmrCtr_mSetControlStatusReg(XPAR_MY_TIMER_BASEADDR, 0, timer_csr);}
}
MicroBlaze定时器(Timer)的使用相关推荐
- 【Android 异步操作】Timer 定时器 ( Timer 与 TimerTask 基本使用 | Timer 定时器常用用法 | Timer 源码分析 )
文章目录 一.Timer 定时器基本使用 二.Timer 定时器常用用法 三.Timer 源码分析 四.Timer 部分源码注释 五.源码及资源下载 参考文档 : Timer 定时器 API 文档 T ...
- Java定时器Timer
Java定时器Timer 在JDK库中,Timer类主要负责计划任务的功能,也就是在指定的时开始执行某一个任务.Timer类的主要作用就是设置计划任务,但封装任务的类却是TimerTask类,执行计划 ...
- python定时器 是线程吗_python线程定时器Timer(32)
相对前面几篇python线程内容而言,本片内容相对比较简单,定时器 – 顾名思义,必然用于定时任务. 一.线程定时器Timer原理 原理比较简单,指定时间间隔后启动线程!适用场景:完成定时任务,例如: ...
- python定时器timer_python通过线程实现定时器timer的方法
本文实例讲述了python通过线程实现定时器timer的方法.分享给大家供大家参考.具体分析如下: 这个python类实现了一个定时器效果,调用非常简单,可以让系统定时执行指定的函数 下面介绍以thr ...
- 第5章 定时器Timer
第5章 定时器Timer 标签: Java多线程编程 <Java多线程编程核心技术> 个人笔记 第5章 定时器Timer 定时器Timer的使用 方法scheduleTimerTask t ...
- python中实现定时器Timer
实现定时器最简单的办法是就是循环中间嵌time.sleep(seconds), 这里我就不赘述了 # encoding: UTF-8 import threading #Timer(定时器)是Thre ...
- Python 线程定时器 Timer - Python零基础入门教程
目录 一.Python 线程定时器 Timer 原理 二.Python 线程定时器 Timer 使用 三.Python 线程定时器 Timer 总结 四.猜你喜欢 零基础 Python 学习路线推荐 ...
- 定时器Timer的实现
定时器Timer的实现 定时器在实际项目中会用的比较平凡.因此,本文首先介绍定时器Timer的windows版本,跨平台的定时器将在下一篇文章中介绍.它们的源代码均用C++编写.源代码详见:https ...
- Java定时器Timer学习之一
2019独角兽企业重金招聘Python工程师标准>>> 种类: 接通延时型定时器:接通延时型定时器是各种PLC(可编程控制器)中最常见最基本的定时器,这种定时器在Siemens的PL ...
最新文章
- 【解析】工业机器人中的各类传感器技术应用
- UWP 负载包含两个或多个具有相同目标的路径 'xxx'
- 第十六届智能车竞赛竞速组别网络报名说明
- javadoc maven_创建Maven源代码和Javadoc工件
- 【机器学习】 - 关于图像质量评价IQA(Image Quality Assessment)
- Python 偏函数
- 推一个知乎学弱猹的公众号
- Spring Security3
- Linux中ELF格式文件介绍
- MFC界面开发帮助文档:BCG可视化设计器使用指南
- 厦门市大专计算机学校有哪些,2021厦门公办大专学校有哪些 【教育部专科院校名单】...
- 【pip command】之卸载 pip 之后重新安装
- 想自学单片机,各位有什么书和板子值得推荐的吗?
- java阿里云图片检测同/异步sdk调用详解
- 三星手机怎么看html5,三星手机查看硬件信息方法
- 朱朱的2020年(上)
- 联通假4G欺骗消费者!
- kafka启动失败 The Cluster ID doesn‘t match...
- Liquid Warping GAN 水记
- 导出RCP程序遇到错误
热门文章
- word内多级列表标题变成黑块解决办法
- 深度linux没有硬盘,安装Deepin系统到硬盘分区部分没有发现硬盘数据的解决
- U盘装系统(Linux)
- Whistle pc抓包,手机抓包,https抓包
- 2019 杭电多校 E - Everything Is Generated In Equal Probability HDU 6595 数学
- 图像处理:分水岭算法(图像分割)
- 苹果6plus自动时间不准 修复苹果自动设置时间不准教程(图文)
- 2022团体程序设计天梯赛题解 L2
- 智能POS如何获取日志数据库文件
- 【C语言程序设计】实验 1