本文主要是介绍江山易改本性难移之ZYNQ SDK API函数笔记(Timer),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
初学Xilinx ZYNQ SDK的开发,下面记录使用到的API函数及自己的理解。若有误,还请指教。
Timer函数
常用编程步骤:
1.查找输入设备的ID查找设备;
2.输入的配置信息初始化;
3.加载计数周期;
4.设置自动装载模式;
5.启动定时器;
配置GPIO只需要以上5个步骤。
1、XGpioPs_Config *XGpioPs_LookupConfig(u16 DeviceId)
名称 | 代码 | 解释 |
---|---|---|
函数名 | XScuTimer_LookupConfig | 查询ID对应的设备配置信息 |
参数1 | u16 DeviceId | timer对应的设备ID,在xparameter.h中定义 |
返回值 | XScuTimer_Config | 指向给定ID设备的配置类表的指针 |
应用举例
XScuTimer_Config *ConfigPtr;
ConfigPtr = XScuTimer_LookupConfig (XPAR_PS7_SCUTIMER_0_DEVICE_ID);
//得到当前定时器配置列表的指针
2、s32 XScuTimer_CfgInitialize(XScuTimer *InstancePtr,XScuTimer_Config *ConfigPtr, u32 EffectiveAddress)
名称 | 代码 | 解释 | |
---|---|---|---|
函数名 | XScuTimer_CfgInitialize | 初始化timer | |
参数1 | XScuTimer *InstancePtr | 指向timer实例的指针 | |
参数2 | XScuTimer_Config *ConfigPtr | 指向配置结构体的指针 | |
参数3 | u32 EffectiveAddress | 设备的基地址,一般为配置信息的基地址 | |
返回值 | s32 | XST_SUCCESS:配置成功;XST_DEVICE_IS_STARTED :定时器已经启动 |
应用举例
XScuTimer Timer; // 定时器
XScuTimer_Config *ConfigPtr; // 配置信息指针
ConfigPtr = XScuTimer_LookupConfig (XPAR_PS7_SCUTIMER_0_DEVICE_ID);
//得到当前定时器配置列表的指针
XScuTimer_CfgInitialize(&Timer, ConfigPtr, ConfigPtr->BaseAddr); //初始化timer
3.void XScuTimer_LoadTimer(InstancePtr,Value ) ;
名称 | 代码 | 解释 |
---|---|---|
函数名 | XScuTimer_LoadTimer | 装载timer周期 |
参数1 | InstancePtr | 指向timer实例的指针 |
参数2 | Value | 装载值 |
返回值 | void |
应用举例
XScuTimer Timer; // 定时器
u32 value = 0x13D92D3F; // 定时1s
XScuTimer_LoadTimer(&Timer, value);
另,关于value和定时周期的计算有如下公式:
定时时间=[(预分频器值 + 1)(加载值 + 1)]/定时器频率
一般私有定时器频率为CPU频率一半,常见为333MHz。若需要定时1s,则
加载值=1s*(333*1000000)*(1/s) - 1 = 0x13D92D3F
4、int XScuTimer_IsExpired(XScuTimer *InstancePtr)
名称 | 代码 | 解释 |
---|---|---|
函数名 | XScuTimer_IsExpired | 查询timer是否计数满 |
参数1 | XScuTimer *InstancePtr | 指向timer实例的指针 |
返回值 | int | TRUE or FALSE |
函数XScuTimer_EnableAutoReload、XScuTimer_Start较为简单,不再赘述。
这篇关于江山易改本性难移之ZYNQ SDK API函数笔记(Timer)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!