创建一个控制AXI GPIO外设的主C源码

应用程序需要源文件来定义其行为。这一步将展示如何为应用程序创建一个新的源文件,并提供一些示例代码。


在弹出的对话框中,命名文件为“main.c”。也可以指定父文件夹,但是通过在上一步中使用右键单击,已经选择了正确的文件夹。


将这段代码复制并粘贴到右边已经打开的空main.c文件中。修改BTN_MASK和领导. _MASK宏,以便它们包含一些“1”,等于连接到的按钮和led的数量GPIO硬件设计中的外围设备。


头文件-附加信息

这段代码会将几个头文件自动拉入到Vitis工作区中:

xparameters.h是从Vivado导出平台的过程中生成的文件。它包括关于硬件设计的信息,包括AXI ip的地址和一些配置参数。实例代码使用它来查找必须传递给GPIO驱动程序,以便他们可以查找驱动程序配置所需的正确初始化GPIO设备。

xil_printf.h允许访问xil_printf函数,它可以用于打印到标准输出,并且比stdio库需要更少的内存空间。

xgpio.h提供对XGpio驱动程序的访问,这是用来提供一个标准的API控制阿喜GPIO外围设备。这里有几个函数API在示例中使用,包括GPIO读取、写入和方向设置调用。

xil_types.h包含各种不同的C类型。在本例中,它仅用于访问“u32”(unsigned 32位int)类型,这是XGpio函数调用的参数。

示例代码的作用

当示例启动时,消息“enter function main”被打印到连接的串行控制台。之后是AXIGPIO初始化ip和驱动程序,应用程序不断循环,检查是否有按钮被按下,如果有,就将led设置为高。当没有按下按钮时,led处于低电平状态。

# include“xparameters.h”# include“xil_printf.h”# include“xgpio.h”# include“xil_types.h”//从xparameters.h获取设备id#定义BTN_ID XPAR_AXI_GPIO_BUTTONS_DEVICE_ID#定义LED_ID XPAR_AXI_GPIO_LED_DEVICE_ID#定义BTN_CHANNEL 1#定义LED_CHANNEL 1#定义b1111 BTN_MASK 0#定义b1111 LED_MASK 0int主要XGpio_Configcfg_ptrXGpio led_devicebtn_deviceu32数据xil_printf“进入功能主要r \\ n//初始化LED设备cfg_ptrXGpio_LookupConfigLED_IDXGpio_CfgInitializeled_devicecfg_ptrcfg_ptr->BaseAddress//初始化按钮设备cfg_ptrXGpio_LookupConfigBTN_IDXGpio_CfgInitializebtn_devicecfg_ptrcfg_ptr->BaseAddress//设置按钮三态XGpio_SetDataDirectionbtn_deviceBTN_CHANNELBTN_MASK//设置Led三态XGpio_SetDataDirectionled_deviceLED_CHANNEL01数据XGpio_DiscreteReadbtn_deviceBTN_CHANNEL数据& =BTN_MASK如果数据! =0数据LED_MASK其他的数据0XGpio_DiscreteWriteled_deviceLED_CHANNEL数据