2

我的问题是,这个函数 XGpio_SetDataDirection 做了什么,en C。例如 XGpio_SetDataDirection (&gp_out, 1, 0x00) ?

4

2 回答 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 回答