初学Xilinx SDK的开发,下面记录使用到的API函数及自己的理解。若有误,还请指教。
1、XScuTimer_Config *XScuTimer_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等较为简单,不再详述
本文转载自: https://blog.csdn.net/tangkunjyy/article/details/62215670