跳转到主要内容

Xilinx SDK 初学之——API函数笔记(GPIO函数)

judy 提交于

初学Xilinx SDK的开发,下面记录使用到的API函数及自己的理解。若有误,还请指教。

xgpio函数
1、int XGpio_Initialize(XGpio * InstancePtr, u16 DeviceId)
<div id="mytable">
<body>
<table border="1">
<thead>
<tr>
<th>名称</th>
<th align="left">代码</th>
<th align="left">解释</th>
</tr>
</thead>
<tbody>
<tr>
<td>函数名</td>
<td align="left">XGpio_Initialize</td>
<td align="left">初始化GPIO</td>
</tr>
<tr>
<td>参数1</td>
<td align="left">XGpio * InstancePtr</td>
<td align="left">指向GPIO实例的指针</td>
</tr>
<tr>
<td>参数2</td>
<td align="left">u16 DeviceId</td>
<td align="left">ID号,自动生成,在xparameters.h文件中定义</td>
</tr>
<tr>
<td>返回值</td>
<td align="left">int</td>
<td align="left">XST_SUCCESS/XST_FAILURE</td>
</tr>
</tbody>
</table>
</body>
</div>

应用举例:
///////////////////////////////////////////////////////
XGpio LedGpio;
XGpio_Initialize(&LedGpio,XPAR_LED_DEVICE_ID) ;
///////////////////////////////////////////////////////

2、void XGpio_SetDataDirection(XGpio *InstancePtr, unsigned Channel,u32 DirectionMask)
<div id="mytable">
<body>
<table border="1">
<tbody>
<tr></tr>
</tbody>
<thead>
<tr>
<th>名称</th>
<th align="left">代码</th>
<th align="left">解释</th>
</tr>
</thead>
<tbody>
<tr>
<td>函数名</td>
<td align="left">XGpio_SetDataDirection</td>
<td align="left">设置GPIO为输入/输出</td>
</tr>
<tr>
<td>参数1</td>
<td align="left">XGpio * InstancePtr</td>
<td align="left">指向GPIO实例的指针</td>
</tr>
<tr>
<td>参数2</td>
<td align="left">unsigned Channel</td>
<td align="left">待设置GPIO的通道(Vivado中设置gpio IP时的设置通道,为1或2)</td>
</tr>
<tr>
<td>参数3</td>
<td align="left">u32 DirectionMask</td>
<td align="left">方向设置。0:output;1:input</td>
</tr>
<tr>
<td>返回值</td>
<td align="left">void</td>
</tr>
</tbody>
</table>
<br />
</body>
</div>

应用举例:
///////////////////////////////////////////////////////
XGpio LedGpio;
XGpio_SetDataDirection(&LedGpio,1,0x00000000) ;
///////////////////////////////////////////////////////
说明:关于参数Channel,在gpio的IP设置时有如下配置:
<center><img src="http://xilinx.eetrend.com/files-eetrend-xilinx/blog/201808/13279-38755-…; alt="" width="670"></center>

配置为上半部分的GPIO,则Channel为1;若设置下半部分配置的GPIO 2,则Channel为2;

3、u32 XGpio_DiscreteRead(XGpio * InstancePtr, unsigned Channel)
<div id="mytable">
<body>
<table border="1">
<thead>
<tr>
<th>名称</th>
<th align="left">代码</th>
<th align="left">解释</th>
</tr>
</thead>
<tbody>
<tr>
<td>函数名</td>
<td align="left">XGpio_DiscreteRead</td>
<td align="left">读取GPIO的值</td>
</tr>
<tr>
<td>参数1</td>
<td align="left">XGpio * InstancePtr</td>
<td align="left">指向GPIO实例的指针</td>
</tr>
<tr>
<td>参数2</td>
<td align="left">unsigned Channel</td>
<td align="left">通道号,同上一函数</td>
</tr>
<tr>
<td>返回值</td>
<td align="left">u32</td>
<td align="left">最多32位的实际值</td>
</tr>
</tbody>
</table>
</body>
</div>

应用举例:
///////////////////////////////////////////////////////
XGpio BtnGpio;
int btn_val ;
btn_val =XGpio_DiscreteRead(&BtnGpio,1) ;
///////////////////////////////////////////////////////

3、void XGpio_DiscreteWrite(XGpio * InstancePtr, unsigned Channel, u32 Data)
<div id="mytable">
<body>
<table border="1">
<tbody>
<tr></tr>
</tbody>
<thead>
<tr>
<th>名称</th>
<th align="left">代码</th>
<th align="left">解释</th>
</tr>
</thead>
<tbody>
<tr>
<td>函数名</td>
<td align="left">XGpio_DiscreteWrite</td>
<td align="left">写GPIO</td>
</tr>
<tr>
<td>参数1</td>
<td align="left">XGpio * InstancePtr</td>
<td align="left">指向GPIO实例的指针</td>
</tr>
<tr>
<td>参数2</td>
<td align="left">unsigned Channel</td>
<td align="left">通道号,同上一函数</td>
</tr>
<tr>
<td>参数3</td>
<td align="left">u32 Data</td>
<td align="left">需要写的值</td>
</tr>
<tr>
<td>返回值</td>
<td align="left">void</td>
</tr>
</tbody>
</table>
<br />
</body>
</div>

应用举例:
///////////////////////////////////////////////////////
XGpio LedGpio;
int led_val = 0xfffffff2;
XGpio_DiscreteWrite(&LedGpio,1,led_val) ;
///////////////////////////////////////////////////////

其他与GPIO相关的函数使用与以上函数大同小异,参考参数含义即可理解。

本文转载自: https://blog.csdn.net/tangkunjyy/article/details/62038253