我的问题是,这个函数 XGpio_SetDataDirection 做了什么,en C。例如 XGpio_SetDataDirection (&gp_out, 1, 0x00) ?
问问题
6841 次
2 回答
2
您可以直接从您的设计中找到/生成 Microblaze 驱动程序的 API 文档。例如,在 Xilinx Platform Studio 中,右键单击 Microblaze 内核应该会出现菜单项 Driver / View API Documentation。从那里您可以导航到xgpio
驱动程序,XGpio_SetDataDirection
您应该会看到如下内容:
void XGpio_SetDataDirection (XGpio * InstancePtr, unsigned Channel, u32 DirectionMask )
设置指定 GPIO 通道的所有离散信号的输入/输出方向。
参数:
InstancePtr
是一个指向要处理的 XGpio 实例的指针。Channel
包含要操作的 GPIO(1 或 2)的通道。DirectionMask
是一个位掩码,指定哪些离散是输入,哪些是输出。设置为 0 的位为输出,设置为 1 的位为输入。返回:无。
注意:如果此功能用于 1 以外的任何通道,则必须为双通道构建硬件。如果不是,则此功能将置位。
因此,在您的情况下XGpio_SetDataDirection (&gp_out, 1, 0x00)
,将 GPIO 端口(带有 LED)设置为 Microblaze CPU 内核的输出。
于 2013-06-06T16:42:49.340 回答
0
这是一个库函数。这可以在 xgpio.c 文件中查看。这是这个人的定义:
void XGpio_SetDataDirection(XGpio *InstancePtr, unsigned Channel,
u32 DirectionMask)
{
Xil_AssertVoid(InstancePtr != NULL);
Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
Xil_AssertVoid((Channel == 1) ||
((Channel == 2) && (InstancePtr->IsDual == TRUE)));
XGpio_WriteReg(InstancePtr->BaseAddress,
((Channel - 1) * XGPIO_CHAN_OFFSET) + XGPIO_TRI_OFFSET,
DirectionMask);
}
于 2021-10-01T14:32:31.287 回答