初学Xilinx SDK的开发,下面记录使用到的API函数及自己的理解。若有误,还请指教。
1、XScuTimer_Config *XScuTimer_LookupConfig(u16 DeviceId)
<div id="mytable">
<body>
<table border="1">
<thead>
<tr>
<th align="left">名称</th>
<th align="left">代码</th>
<th align="left">解释</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">函数名</td>
<td align="left">XScuTimer_LookupConfig</td>
<td align="left">查询ID对应的设备配置信息</td>
</tr>
<tr>
<td align="left">参数1</td>
<td align="left">u16 DeviceId</td>
<td align="left">timer对应的设备ID,在xparameter.h中定义</td>
</tr>
<tr>
<td align="left">返回值</td>
<td align="left">XScuTimer_Config</td>
<td align="left">指向给定ID设备的配置类表的指针</td>
</tr>
</tbody>
</table>
</body>
</div>
////////////////////////////////////////////////////
应用举例
XScuTimer_Config *ConfigPtr;
ConfigPtr = XScuTimer_LookupConfig (XPAR_PS7_SCUTIMER_0_DEVICE_ID);
//得到当前定时器配置列表的指针
////////////////////////////////////////////////////
2、s32 XScuTimer_CfgInitialize(XScuTimer *InstancePtr,XScuTimer_Config *ConfigPtr, u32 EffectiveAddress)
<div id="mytable">
<body>
<table border="1">
<thead>
<tr>
<th align="left">名称</th>
<th align="left">代码</th>
<th align="left">解释</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">函数名</td>
<td align="left">XScuTimer_CfgInitialize</td>
<td align="left">初始化timer</td>
</tr>
<tr>
<td align="left">参数1</td>
<td align="left">XScuTimer *InstancePtr</td>
<td align="left">指向timer实例的指针</td>
</tr>
<tr>
<td align="left">参数2</td>
<td align="left">XScuTimer_Config *ConfigPtr</td>
<td align="left">指向配置结构体的指针</td>
</tr>
<tr>
<td align="left">参数3</td>
<td align="left">u32 EffectiveAddress</td>
<td align="left">设备的基地址,一般为配置信息的基地址</td>
</tr>
<tr>
<td align="left">返回值</td>
<td align="left">s32</td>
<td align="left">XST_SUCCESS:配置成功;XST_DEVICE_IS_STARTED :定时器已经启动</td>
</tr>
</tbody>
</table>
</body>
</div>
////////////////////////////////////////////////////
应用举例
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 ) ;
<div id="mytable">
<body>
<table border="1">
<tbody>
<tr></tr>
</tbody>
<thead>
<tr>
<th align="left">名称</th>
<th align="left">代码</th>
<th align="left">解释</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">函数名</td>
<td align="left">XScuTimer_LoadTimer</td>
<td align="left">装载timer周期</td>
</tr>
<tr>
<td align="left">参数1</td>
<td align="left">InstancePtr</td>
<td align="left">指向timer实例的指针</td>
</tr>
<tr>
<td align="left">参数2</td>
<td align="left">Value</td>
<td align="left">装载值</td>
</tr>
<tr>
<td align="left">返回值</td>
<td align="left">void</td>
</tr>
</tbody>
</table>
<br />
</body>
</div>
////////////////////////////////////////////////////
应用举例
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)
<div id="mytable">
<body>
<table border="1">
<thead>
<tr>
<th align="left">名称</th>
<th align="left">代码</th>
<th align="left">解释</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">函数名</td>
<td align="left">XScuTimer_IsExpired</td>
<td align="left">查询timer是否计数满</td>
</tr>
<tr>
<td align="left">参数1</td>
<td align="left">XScuTimer *InstancePtr</td>
<td align="left">指向timer实例的指针</td>
</tr>
<tr>
<td align="left">返回值</td>
<td align="left">int</td>
<td align="left">TRUE or FALSE</td>
</tr>
</tbody>
</table>
</body>
</div>
其他比如XScuTimer_EnableAutoReload、XScuTimer_Start等较为简单,不再详述
本文转载自: https://blog.csdn.net/tangkunjyy/article/details/62215670