【ZYNQ】CPU 私有定时器

news2024/7/6 18:11:07

Zynq 的每个 Cortex-A9 处理器都有自己的专用 32 位定时器和 32 位看门狗定时器,两个处理器共享一个全局 64 位定时器,这些计时器的时钟频率始终为 CPU 频率的 1/2。本文主要介绍 Zynq 芯片 CPU 私有定时器的工作特性,以及私有定时器的基本使用方法。

私有定时器

        Zynq 的每个 Cortex-A9 处理器都有自己的专用 32 位定时器和 32 位看门狗定时器,两个处理器共享一个全局 64 位定时器,这些计时器的时钟频率始终为 CPU 频率的 1/2。

CPU 私有定时器具有以下特性:

  • 32 位计数器,当计数达到 0 时产生中断
  • 8 位预分频器,可更好地控制中断周期
  • 可配置的单发(Single-shot)或自动重装(Auto-reload)模式
  • 可配置的计数器起始值
  • 时钟频率为 CPU 时钟的 1/2

        使用 CPU 私有定时器时,可以直接读写相关寄存器,也可以采用高层次的方法。Xilinx 官方已经将函数封装好,只需要声明头文件 "xscutimer.h" 即可。

#include "xparameters.h"
#include "xscugic.h"
#include "xscutimer.h"

#define TIMER_DEVICE_ID   XPAR_XSCUTIMER_0_DEVICE_ID
#define TIMER_LOAD_VALUE  0xFFFF

XScuGic   IntcInstance;   // GIC
XScuTimer TimerInstance;  // Timer

void Timer_Init(XScuGic *IntcInstancePtr, XScuTimer *TimerInstancePtr,
			u16 deviceId, u16 TimerIntrId)
{
	XScuTimer_Config *ConfigPtr;

	// 初始化CPU私有定时器
	ConfigPtr = XScuTimer_LookupConfig(deviceId);

	XScuTimer_CfgInitialize(TimerInstancePtr, ConfigPtr,
				ConfigPtr->BaseAddr);

	// 自测试,确保硬件工作
	XScuTimer_SelfTest(TimerInstancePtr);

	// 使能自动重载模式
	XScuTimer_EnableAutoReload(TimerInstancePtr);

	// 配置计数器值
	XScuTimer_LoadTimer(TimerInstancePtr, TIMER_LOAD_VALUE);

	// 启动定时器
	XScuTimer_Start(TimerInstancePtr);

	// 连接中断子系统
	TimerSetupIntrSystem(IntcInstancePtr,
				TimerInstancePtr, TimerIntrId);
}

在头文件 "xscutimer.h" 中可以看到 XScuTimer_EnableAutoReload() 与 XScuTimer_LoadTimer() 函数的定义,本质上是在写 Timer 相关寄存器。

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

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

相关文章

Vuex 4与状态管理实战指南

title: Vuex 4与状态管理实战指南 date: 2024/6/6 updated: 2024/6/6 excerpt: 这篇文章介绍了使用Vuex进行Vue应用状态管理的最佳实践,包括为何需要状态管理,Vuex的核心概念如store、actions、mutations和getters,以及如何处理异步操作和模…

AI大模型日报#0606:智谱AI开源GLM-4-9B、Pika再融5.8亿

导读:AI大模型日报,爬虫LLM自动生成,一文览尽每日AI大模型要点资讯!目前采用“文心一言”(ERNIE 4.0)、“零一万物”(Yi-Large)生成了今日要点以及每条资讯的摘要。欢迎阅读&#xf…

计算机网络学习实践:配置主机通过DHCP获取IP并通过域名访问web服务器

计算机网络学习实践:配置主机通过DHCP获取IP并通过域名访问web服务器 点一点就能配置,不需要输入命令 1.实验准备 实验环境:思科的模拟器 实验设备: 3个服务器,1个二层交换机(不是三层的)&a…

使用C++实现YOLO图像分类:从环境搭建到性能评估的完整指南

⭐️我叫忆_恒心,一名喜欢书写博客的研究生👨‍🎓。 如果觉得本文能帮到您,麻烦点个赞👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三连支…

问你为什么选择Kafka,你会怎么回答?

可靠的含义在百度百科的解释是:可以信赖、可以相信、可靠的朋友。那Kafka究竟是不是一个可靠的朋友呢?既然全世界绝大部分高可用系统都有Kafka的支持,Kafka必定有其过人之处,跟着我来分析分析。 另外多提一嘴Kafka在GitHub目前已…

HTTP-一

一、超文本传输 1. 文本传输 > 字符串(能在utf8/gbk等码表上找到合法字符) 2. 超文本传输 > 不仅仅是字符串,还可以携带一些图片,特殊得格式 HTML 3. 富文本 word http0.9 -> http1.0 -> http1.1 -> http2.0 -> http3.0 http1.0是主流版本 2.0 和…

任务3.7 开发名片管理系统

本实战项目以Java语言为基础,精心打造了一个功能全面的名片管理系统。系统采用面向对象的设计原则,通过Card类来封装每张名片的详细信息,如姓名、单位、职位和联系电话等,并提供了标准的访问器和修改器方法以确保数据的安全访问。…

course-nlp——8-translation-transformer

本文参考自https://github.com/fastai/course-nlp。 注意力机制和 Transformer Nvidia AI 研究员 Chip Huyen 写了一篇很棒的文章《Top 8 trends from ICLR 2019》,其中的趋势之一是 RNN 正在失去研究人员的青睐。 这是有原因的,RNN 可能很麻烦&#…

2938. 区分黑球与白球

题目 桌子上有 n 个球,每个球的颜色不是黑色,就是白色。 给你一个长度为 n 、下标从 0 开始的二进制字符串 s,其中 1 和 0 分别代表黑色和白色的球。 在每一步中,你可以选择两个相邻的球并交换它们。 返回「将所有黑色球都移到…

网工内推 | 网络运维工程师,H3CIE认证优先,13薪,享股票期权

01 畅读 🔷招聘岗位:高级网络运维工程师 🔷职责描述: 1.负责线上业务网络技术运维工作,保障并优化线上网络质量; 2.规划并构建公司线上业务网络架构; 3.规划线上业务网络质量评估与监控体系&…

信号:干扰类别及特征提取

目录 第一部分:干扰类别 1.压制干扰 1.1噪声调幅瞄准式干扰(单音干扰) 1.2噪声调频阻塞式干扰(宽带噪声干扰) 1.3噪声调频扫频式干扰(线性调频) 2.欺骗干扰 2.1距离欺骗干扰(幅度调制干扰&#xff0…

关于main函数参数列表的那些事

写在最前面: 本篇博客所写代码,全部都依赖于Linux环境。 在开始之前,我们先问自己几个问题: main函数可以传参吗?如果main函数可以传参,最多可以传几个参数。main函数传递的参数具体作用是什么? 一.是否…

java小游戏-坦克大战1.0

文章目录 游戏界面样式游戏需求分析设计类过程1:初始化界面过程2:用面向对象思想设置功能过程3:调用类实例化对象过程4:联合调试 项目代码下载: CSDN_java小游戏-坦克大战1.0 来源:该游戏来自尚学堂~&…

神了,Suno创作的《不期待》三个版本,你最喜欢哪一个?

Suno AI 最近尝试了下 Suno AI 的v3.5模型,有点惊艳 做了三首版本的AI歌曲,词是我写的,其他全都交给Suno了,欢迎大家来听听 B站链接 Youtube链接

源码文章上传无忧,论坛小程序支持

前言 在数字化时代,知识的分享与传播显得愈发重要。为了满足广大创作者和求知者的需求,我们推出了全新的论坛小程序,不仅支持文章、源码、链接等多样化内容的上传,还实现了付费观看功能,为创作者们提供了一个展示才华…

flask 之JWT认证实现

目录 1、JWT 1.1、JWT概述 1.2、token的生成 1.3、token校验 1.4、flask项目中实现JWT认证 1、JWT 1.1、JWT概述 JWT(JSON Web Token)是一种用于身份验证和授权的开放标准。它由三部分组成,分别是头部、负载和签名。 头部&#xff0…

第三方软件测试机构与CMA、CNAS资质

第三方软件测试机构 随着信息技术的快速发展,软件在各个领域的应用越来越广泛,软件的质量和安全性成为人们关注的焦点。为了确保软件的质量和安全性,第三方软件测试机构和CMA、CNAS资质成为了重要的保障。 第三方软件测试机构是独立于软件开…

python调用excel的demo

在本地安装Pycharm之后,新建工程,在main.py中键入如下代码,即可实现Python调用excel: import pandas as pd sheet pd.read_excel(test.xlsx) data sheet.loc[0].values print("读取指定行的数据:\n{0}".format(data)) 第一次编…

如何将 MySQL 数据库共享给他人?

文章目录 共享所有数据库给他人1. 连接到 MySQL 数据库2. 选择要使用的数据库3. 修改连接所需的 host4. 刷新权限 共享部分数据库给他人1. 创建用户2. 授权3. 刷新权限 结语 🎉欢迎来到Java学习路线专栏~探索Java中的静态变量与实例变量 ☆* o(≧▽≦)o *☆嗨~我是I…

JVMの静、动态绑定异常捕获JIT即时编译

在说明静态绑定和动态绑定之前,我们首先要了解在字节码指令的层面,JVM是如何调用方法的: 例如我有以下的代码,很简单就是在main方法中调用了另一个静态方法: public class MethodTest {public static void main(Strin…