欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > 【ZYNQ】CPU 私有定时器

【ZYNQ】CPU 私有定时器

2025/11/4 5:40:03 来源:https://blog.csdn.net/sxyang2018/article/details/139508289  浏览:    关键词:【ZYNQ】CPU 私有定时器

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  0xFFFFXScuGic   IntcInstance;   // GIC
XScuTimer TimerInstance;  // Timervoid 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 相关寄存器。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词