ZYNQ AXI_Timer 中断
REVIEW
| 关于ZYNQ中断: ZYNQ PS_GPIO中断-CSDN博客 ZYNQ AXI_GPIO_INT-CSDN博客 ZYNQ 定时器中断-CSDN博客 在一些应用场景中,可能需要使用到多个定时器,除了选择使用 PS 侧其他定时器外,也可以使用 PL 侧逻辑定时器。 |
1. 今日摸鱼任务
| 创建并使用AXI_TIMER, 定时器1:1s MIO7(PS_LED)闪烁 定时器2:0.5s EMIO54(PL_LED)闪烁 |
| 小梅哥教材: 03_【裸机教程】基于C编程的Zynq裸机程序设计与应用教程v2.4.5.pdf 第七章 基于AXI Timer的定时器中断实验(没用串口) |
2. AXI_Timer 核
| AXI Timer IP 核,全称为 AXI Timer/Counter ,是一个 32/64 位定时器模块,可连接到 AXI4-Lite 接口。通过计数值以及接入 axi_timer 的计数时钟周期,可以在 PS 内取得比较精确的计时。 (单个32位,级联64位) 结构框图如下图: |
|
|
| AXI4-Lite Interface : AXI4 Lite 接口模块实现 AXI4 Lite 从接口,用于访问内存映射定时器寄存器。 |
| Timer Register :为每个定时器 / 计数器实现一组 32 位寄存器。 这组寄存器包含加载寄存器、定时器/计数器寄存器和控制/状态寄存器。 |
| 32-bit Counter :定时器 / 计数器模块有两个 32 位计数器。 每个计数器可配置为递增/递减计数,并可使用加载寄存器中的值加载。 |
| Interrupt Counter :中断控制模块,根据工作模式生成单个中断。 |
| Pulse Width Modulation (PWM): PWM 模块生成具有指定频率和占空比的脉冲信号 PWM0 。 使用定时器 0 用于 PWM0 周期,定时器 1 用于PWM0 输出宽度。 |
3. AXI_Timer 寄存器
3.1 寄存器一览 |
|
|
3.2 控制/状态寄存器 0 (TCSR0)
|
| 31-12 保留 11 CASC 使能定时器的级联模式 1启用级联模式,做低32位。 10 ENALL 使能所有定时器 1 写入该位将设置 ENALL、ENT0(TCSR0)和 ENT1(TCSR1)。 0 写入此寄存器将清除 ENALL,但对 ENT0 和 ENT1 没有影响。 9 PWMA0 使能定时器 0 的脉宽调制 PWM 模式,MDT0(TCSR0)和 MDT1(TCSR1)必须为 0。 8 T0INT 定时器 0 中断 捕获模式且定时器已使能,则此位表示已发生捕获。 生成模式,则该位表示计数器已翻转。必须通过写入1来清除。 7 ENT0 使能定时器 0 0禁用定时器(计数器停止) 1使能定时器(计数器运行) 6 ENIT0 使能定时器 0 的中断 使能此定时器中断信号的断言。对 TCSR0 中的中断标志 (T0INT)没有影响。 0禁用中断信号 1使能中断信号 5 LOAD0 加载定时器 0 1使用 TLR0 中的值加载计时器 与 ENT0 位一起清除 4 ARHT0 自动重新加载/保持定时器 0 生成模式时,该位确定计数器是重新加载生成值并继续运行还是保持在终止值。 在捕获模式下,该位确定新的捕获触发器覆盖或保留先前捕获的值。 0保持计数器或捕获值。在提供外部捕获之前,必须读取TLR0。 1重新加载生成值或覆盖捕获值。 3 CAPT0 使能外部捕获触发器定时器 2 GENT0 使能外部生成信号定时器 0 1 UDT0 递增/递减计数定时器 0递增 1递减 0 MDT0 定时器 0 模式 0生成模式 1捕获模式 |
3.3 加载寄存器(TLR0 和 TLR1) 32b |
| Timer/Counter Load Register 计数器宽度配置为小于 32 位时,加载寄存器值在 TLR0 和 TLR1 中右对齐。 最低有效计数器位始终映射到加载寄存器的 bit0 。 级联模式下, TLR0 具有生成值的最低有效 32 位,而 TLR1 在生成模式下应具有生成值的最高有效位。 |
3.4 定时器/计数器寄存器(TCR0 和 TCR1)32b |
| Timer/Counter Register 计数器宽度配置为小于 32 位时,计数值在 TCR0 和 TCR1 中右对齐。 在级联模式下, TCR0 具有 64 位计数器中最低有效位的 32 位, TCR1 具有最高有效位。 |
3.5 控制/状态寄存器 1(TCSR1)
|
| 与TCSR0相比,减少了第11位 其他功能与其对应 |
4. 工作模式
3.1 生成模式 |
| 在生成模式下,会将加载寄存器(Load Register)中的值加载到计数器中。当计数器使能时,根据定时器控制状态寄存器(TCSR )中向上 / 向下(UDT)位,递增/减计数。在计数器进位转换时,计数器停止或重新加载生成值,并在达到超时值后,按照 TCSR 中自动重新加载 /保持( ARHT)位的选择继续计数。定时器中断状态(TINT ) 如果使能,则 GenerateOut 信号在一个时钟周期内被驱动为 1 。 如果使能,当达到超时值时,定时器的中断信号被驱动为1。通过向定时器中断寄存器写入 1 来清除中断。使用此模式生成具有指定间隔的重复中断或外部信号。 |
3.2 捕获模式 |
| 在捕获模式下,当外部捕获信号时,计数器的值存储在加载寄存器中。检测到捕获事件时,也会在 TCSR 中设置 TINT 位。根据 TCSR 中 UDT 位的选 择,计数器可配置为该模式的递增或递减计数器。自动重新加载 / 保持(ARHT)位控制在清除前一个 TINT标志之前,是否用新的捕捉值覆盖捕捉值。使用此模 式对外部事件进行时间标记,同时生成中断。 |
3.3 脉宽调制模式 |
| 在脉宽调制(PWM )模式下,两个定时器 /计数器成对使用,以产生具有指定频率和占空因数的输出信号( PWM0 )。定时器 0 设置周期,定时器 1 设置PWM0 输出的高电平时间。 |
3.4 级联模式 |
| 在级联模式下,两个定时器/ 计数器级联为单个 64 定时器 /计数器。级联计数器可以在生成和捕获模式下工作。 TCSR0 用作级联计数器的控制和状态寄存器。在此模式下, TCSR1 被忽略。 当需超过 32 位宽的定时器 /计数器时,使用此模式。级联操作需要将定时器 0 和定时器 1 成对使用。定时器 1 的计数事件是定时器 0 从全 1 翻转到全 0,反之亦然。 |
5. Block Design
![]() |
![]() |
| AXI_TIMER保持默认设置 |
![]() |
![]() |
6. SDK
| PS_GPIO、 SCU_GIC |
| ZYNQ PS_GPIO中断-CSDN博客 |
| AXI_TIMER.h |
| #ifndef AXI_Timer_AXI_Timer_H_ #include "xscutimer.h"
//这里计算值,需选择 XTC_DOWN_COUNT_OPTION 配置为向下计数(默认为向上计数) extern XTmrCtr AXI_Timer0; //定时器实例 void AXI_Timer_Init(XTmrCtr *TmrCtrInstPtr,uint16_t DevId); #endif /* AXI_Timer_AXI_Timer_H_ */ |
| AXI_TIMER.c |
| /** #include "AXI_TIMER.h"
/** //设置重装载值,这个值在计数器启动时被载入 //启动计数器 void AXI_Timer0_IRQ_Handler(void *CallBackRef, u8 TmrCtrNum) |
| main.c |
| //系统头文件 //Xilinx头文件 #include "AXI_TIMER.h"
#define PL_LED (54+0) int main(void) //初始化 PS 端 GPIO } } |
每次检测到定时标志,LED翻转
摸鱼结束~
相关文章:
ZYNQ AXI_Timer 中断
REVIEW 关于ZYNQ中断: ZYNQ PS_GPIO中断-CSDN博客 ZYNQ AXI_GPIO_INT-CSDN博客 ZYNQ 定时器中断-CSDN博客 在一些应用场景中,可能需要使用到多个定时器,除了选择使用 PS 侧其他定时器外,也可以使用 PL 侧逻辑定时器。 1. 今日摸鱼…...
UE5之5.4 第一人称示例代码阅读2 子弹发射逻辑
TP_WeaponComponent.h 看看头文件 暴露了attach weapon和fire给蓝图 这两个函数意义一看名字吧,就是捡起来枪的时候执行,一个就是发射子弹的时候执行 #pragma once#include "CoreMinimal.h" #include "Components/SkeletalMeshComponen…...
Python 实现日期计算与日历格式化输出(万年历)
目录 一、引言 二、需求分析 三、实现思路 四、代码实现 五、代码分析 六、测试与验证 七、总结与展望 在日常的编程中,我们经常会遇到与日期相关的问题,比如计算两个日期之间的天数差、确定某个特定日期是星期几以及格式化输出日历等。本文将详细…...
10.28.2024刷华为OD C题型
文章目录 HJ9HJ10HJ11HJ13HJ17 HJ9 HJ10 HJ11 HJ13 HJ17...
映射问题的解决办法(mybaitis)
最初我用的是注解来操控数据库(注释掉的部分) Mapper public interface ThreadMapper {// Select("SELECT * FROM thread LIMIT #{page}, #{size}")List<Thread> getListByPage(Param("page") int page, Param("size&qu…...
关于机器学习方向学习的一些建议(过来人)
以下是关于机器学习方向学习的一些建议: 一、扎实的数学基础 线性代数 线性代数是机器学习的基石。矩阵运算在数据表示、模型参数计算等方面无处不在。例如,在多元线性回归中,我们用矩阵来表示自变量和因变量之间的关系。像最小二乘法求解回…...
【云原生】云原生后端:网络架构详解
目录 引言一、微服务间的通信1.1 通信方式概览1.2 HTTP/REST1.3 gRPC1.4 消息队列1.5 GraphQL 二、API网关2.1 API网关架构示例2.2 API网关实现示例 三、服务发现3.1 服务发现实现示例3.2 服务发现的优势 四、网络安全4.1 网络安全最佳实践4.2 网络安全架构示例 总结参考资料 引…...
期货资管子系统框架设计JS路径及源代码分享
期货资管子系统框架设计JS路径及源代码分享 随着期货资管子系统前端技术的飞速发展,JavaScript(JS)及其相关框架已成为构建这类系统的重要工具。本文将详细介绍一个期货资管子系统框架的设计思路,并分享部分JS路径及源代码&#…...
【YOLO 系列】基于YOLO的工业自动化轴承缺陷检测系统【python源码+Pyqt5界面+数据集+训练代码】
前言 轴承作为机械设备中的关键部件,其性能直接影响到设备的稳定性和寿命。轴承缺陷的早期检测对于预防设备故障、减少维护成本和提高生产效率至关重要。然而,传统的轴承缺陷检测方法往往依赖于人工检查,这不仅效率低下,而且容易…...
Word中Normal.dotm样式模板文件
Normal.dotm文档 首先将自己电脑中C:\Users\自己电脑用户名\AppData\Roaming\Microsoft\Templates路径下的Normal.dotm文件做备份,在下载本文中的Normal.dotm文件,进行替换,重新打开word即可使用。 字体样式如下(可自行修改&#…...
生成式 AI 与向量搜索如何扩大零售运营:巨大潜力尚待挖掘
在竞争日益激烈的零售领域,行业领导者始终在探索革新客户体验和优化运营的新途径,而生成式 AI 和向量搜索在这方面将大有可为。从个性化营销到高效库存管理,二者在零售领域的诸多应用场景中都展现出变革性潜力,已成为保持行业领先…...
WonderWorld:斯坦福与 MIT 联手打造实时交互生成图像,单图秒变 3D 虚拟世界
❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦! 🥦 微信公众号ÿ…...
2024年【制冷与空调设备安装修理】考试内容及制冷与空调设备安装修理最新解析
题库来源:安全生产模拟考试一点通公众号小程序 制冷与空调设备安装修理考试内容是安全生产模拟考试一点通总题库中生成的一套制冷与空调设备安装修理最新解析,安全生产模拟考试一点通上制冷与空调设备安装修理作业手机同步练习。2024年【制冷与空调设备…...
PHP const 和 define主要区别
在PHP中,const 和 define 都用于定义常量,但它们有一些关键的区别。以下是它们之间的主要不同点: 定义方式: const:在定义常量时,不需要使用函数形式,而是直接赋值。 const MY_CONSTANT som…...
期中前学习复习总结
期中前终于把每一科的本质给搞明白了。这篇文章也将各学科剖分为两部分。 目录 本质 学法 从问题或条件出发思考问题 从条件出发思考问题 从结论/问题出发思考问题 整理知识与反向押题法 反向押题法 本质 作者是一个理科脑,什么都觉得只要我脑子够新东西我…...
K8S如何基于Istio重新实现微服务
K8S如何基于Istio重新实现微服务 认识 Istio前言Istio 的理念Istio 的架构数据平面控制平面服务与 Istio 的关系 Istio 实践环境准备安装 Helm安装Istio 使用 Istio 代理运行应用情感分析应用的架构使用 Istio 代理运行应用Sidecar 注入Ingress 网关网关资源VirtualService 资源…...
MediaPipe 与 OpenCV 的结合——给心爱的人画一个爱心吧~
目录 概要 实现思路 整体代码实现 效果展示 总结 概要 实时手部检测与绘图应用,通过摄像头捕捉视频流,使用 MediaPipe 识别手部关键点,判断食指是否伸展且其他手指是否弯曲,在满足条件时在画布上绘制圆点,并实时显…...
心觉:成大事,不怕慢,就怕站
Hi,我是心觉,带你用潜意识化解各种焦虑、内耗,建立无敌自信;教你财富精准显化的实操方法;关注我,伴你一路成长! 每日一省写作213/1000天 今天咱们聊聊一个不太花哨,但超重要的话题:…...
练习LabVIEW第二十三题
学习目标: 刚学了LabVIEW,在网上找了些题,练习一下LabVIEW,有不对不好不足的地方欢迎指正! 第二十三题: 建立一个枚举控件,其内容为张三、李四、王五共三位先生,要求当枚举控件显…...
集成对接案例分享:金蝶云与聚水潭数据对接
金蝶云星空与聚水潭的采购入库单数据集成案例分享 在企业信息化管理中,数据的高效流转和准确对接是提升业务效率的关键。本文将深入探讨如何通过轻易云数据集成平台,实现金蝶云星空中的采购入库单数据无缝对接到聚水潭系统中的其他入库单。 本次集成方…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...
Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...
Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案
在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...
深入浅出Diffusion模型:从原理到实践的全方位教程
I. 引言:生成式AI的黎明 – Diffusion模型是什么? 近年来,生成式人工智能(Generative AI)领域取得了爆炸性的进展,模型能够根据简单的文本提示创作出逼真的图像、连贯的文本,乃至更多令人惊叹的…...







