「正点原子FPGA连载」第三章AXI GPIO控制LED实验( 四 )


「正点原子FPGA连载」第三章AXI GPIO控制LED实验文章插图
图 3.4.6 板级支持包
点击“Documentation”会在浏览器窗口打开GPIO_API文档 , 会展示关于GPIO的详细信息 , 想了解GPIO的 , 可以仔细浏览其中的信息 。 如图 3.4.7所示:
「正点原子FPGA连载」第三章AXI GPIO控制LED实验文章插图
图 3.4.7 AXI GPIO的API文档
点击“Import Examples” , 会弹出下图所示的导入示例界面 , 关于GPIO有四个示例 。 如图 3.4.8所示:
「正点原子FPGA连载」第三章AXI GPIO控制LED实验文章插图
图 3.4.8 导入示例
这四个示例的介绍可以在刚才打开的API文档中看到 。 在API文档中点击左侧的“Examples” , 右侧出现这四个示例的介绍信息 , 如图 3.4.9所示:
「正点原子FPGA连载」第三章AXI GPIO控制LED实验文章插图
图 3.4.9 示例的介绍信息
从上面的介绍中 , 我们因为本实验是通过GPIO控制LED , 所以我们选择xgpio_example示例 。 勾选图 3.4.8中示例后 , 点击“OK”按钮 。 在Project Explorer中 , 新增了示例system_bsp _example_1目录 , 我们打开其src目录下的xgpio_example.c文件 。 如图 3.4.10所示:
「正点原子FPGA连载」第三章AXI GPIO控制LED实验文章插图
图 3.4.10 打开xgpio_example.c文件
“xgpio_example.c”包含三个函数:“xparameters.h”、“xgpio.h”和“xil_printf.h” , 按下Ctrl键的同时鼠标点击相应的函数即可进入函数中查看信息 。 “xparameters.h”定义了一些默认的参数 , “xil_printf.h”是打印函数用来控制打印信息 , “xgpio.h”文件包含Xilinx通用I/O(Xgpio)设备驱动程序的软件API定义 。 我们本次实验的软件程序部分就可以根据官方示例“xgpio_example.c”进行设计 。 接下来先要创建源文件 。 在axi_gpio_led/src目录上右键 , 依次点击“New->File” , 如图 3.4.11所示:
「正点原子FPGA连载」第三章AXI GPIO控制LED实验文章插图
图 3.4.11新建源文件
在下图所示的弹出的添加源文件界面中 , “File name”一栏我们输入文件名“main.c” , 然后点击“Finish”按钮 。
「正点原子FPGA连载」第三章AXI GPIO控制LED实验文章插图
图 3.4.12源文件名称
我们在新建的main.c文件中输入以下代码:

  1. 1 #include "xparameters.h"
  2. 2 #include "xgpio.h"
  3. 3 #include "xil_printf.h"
  4. 4 #include "sleep.h"
  5. 5
  6. 6 #define LED_ID XPAR_GPIO_0_DEVICE_ID //led器件ID
  7. 7 #define LED_CHANNEL 1 //LED通道
  8. 8
  9. 9 XGpio Gpio; //GPIO实例
  10. 10
  11. 11 int main(void){
  12. 12 int i=0;
  13. 13
  14. 14 xil_printf("GPIO LED TEST\n\r");
  15. 15 //初始化GPIO
  16. 16 XGpio_Initialize(
  17. 17 //为指定的信道设置方向, 0 输出, 1输入
  18. 18 XGpio_SetDataDirection(
  19. 19
  20. 20 while (1) {
  21. 21 //向指定通道写入数据 , LED每0.5秒流转一次
  22. 22 XGpio_DiscreteWrite(
  23. 23 //循环计数 , 表示第几个灯亮
  24. 24 if(i == 3)
  25. 25 i = 0;
  26. 26 else
  27. 27 i = i + 1;
  28. 28 //延时0.5秒
  29. 29 usleep(500000);
  30. 30 }
  31. 31 return 0;