ZYNQ TTC使用方法

前言

计时器是嵌入式编程中最常使用的模块了,本文介绍下ZYNQ中定时器的使用,大部分内容参照官方手册ug1085

平台

Vivado 2017.4
Windows 10
ZCU102开发板

Features

在这里插入图片描述

Block Diagram

在这里插入图片描述

直接上应用代码

定时器初始化

int XTtcPs_Init(XTtcPs * TimerPtr,u16 DeviceId ,u16 rate_hz)
{
	int Status;
	XTtcPs_Config *Config;

	XInterval Interval;
	u8 Prescaler;

	Config = XTtcPs_LookupConfig(DeviceId);  // 查找设备

	Status = XTtcPs_CfgInitialize(TimerPtr, Config, Config->BaseAddress);

	if (Status != XST_SUCCESS) {
		xil_printf("In %s:\t XTtcPs %d initialization Failed...\r\n",
				__func__,DeviceId);
		return XST_FAILURE;
	}
	else
	{
		xil_printf("In %s:\t XTtcPs %d initialization Success...\r\n",
				__func__,DeviceId);
	}
	XTtcPs_SetOptions(TimerPtr, XTTCPS_OPTION_INTERVAL_MODE | XTTCPS_OPTION_WAVE_DISABLE);
	XTtcPs_CalcIntervalFromFreq(TimerPtr, rate_hz, &Interval, &Prescaler);
	XTtcPs_SetInterval(TimerPtr, Interval);
	XTtcPs_SetPrescaler(TimerPtr, Prescaler);
	//XTtcPs_Start(TimerPtr);
	return Status;
}

注册中断函数

要注意,中断函数里尽量快进快出,以免出现不必要的问题。

	XScuGic_SetPriorityTriggerType(ScuGicInstancePtr, XPAR_XTTCPS_2_DEVICE_ID,0x10, 0x3); //设置优先级
	XScuGic_Connect(&ScuGicInstance, XPAR_XTTCPS_2_INTR,(Xil_InterruptHandler)XTtcPs2_ScTick_callback,
			(void *)&XTtcPs2_ScTick);
	XScuGic_Enable(&ScuGicInstance, XPAR_XTTCPS_2_INTR);
	XTtcPs_EnableInterrupts(&XTtcPs2_ScTick, XTTCPS_IXR_INTERVAL_MASK);
  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值