文章目录
- 第一部分
-
- 环境变量配置
- hps_0.h头文件的生成
- 补充:解决soc_cv_av 没有声明
- 第二部分
-
- 实验目的
- 实验原理
- HPS GPIO的原理
- 软件API
- LED和KEY控制
- 具体代码分析
- 点亮LED的完整代码
- 上板测试,成功点亮LED
第一部分
软件实验二是通过采用QSYS创建一个硬核工程,控制HPS端LED和KEY。
由于只需要控制HPS端的外设,因此其实现方法和实验一是相同的,编写软件程序即可。
在软件实验二的程序中,通过C程序编写点亮LED灯的时候,包含如下的头文件,这些头文件的环境配置以及hps_0.h头文件的生成都是重点要学习的地方。其中hps_0.h头文件就是通过我们创建的硬核工程通过命令生成的。下面均会一 一讲述。
D:intelFPGA17.1embeddedipalterahpsaltera_hpshwlibinclude
点击Add,输入路径,然后勾选 Add to all configurations 和 Add to all languages 选项, 然后点击 OK 即可,同样的方式可添加socal./hps.h头文件
D:intelFPGA17.1embeddedipalterahpsaltera_hpshwlibincludesoc_cv_av
最终得到如下:
通过ls命令可查看,现在定位成功。
环境配置完成,且有了hps_0.h头文件,那么代码无错误的情况下即可成功编译。
补充:解决soc_cv_av 没有声明
分析完原理后,我们就要采用软件的方式来完成地址映射。可以通过如下软件API访问GPIO控制器的寄存器。(所用到的函数)
头文件的说明:
#include “hwlib.h” :针对与HPS硬件编程有关的一些常量进行定义
#include “socal/socal.h” :该文件中是一些基本的底层操作函数(位,字节,字的读写)
#include “socal/hps.h” : 对HPS中各种外设地址信息进行了定义(虚拟地址映射的时候会用到)
LED和KEY控制
如下为HPS的KEY和LED的引脚分配,分别连接到54和53,由GPIO1控制器控制,另外该控制器还控制29~57
具体代码分析
采用宏定义的方式来控制LED和KEY的方向,以及LED的输出状态
GPIO1_SWPORTA_DDR寄存器组可设置IO引脚方向,alt_setbits_word 设定寄存器的指定位为1,如下语句是配置LED引脚为输出引脚
ALT_GPIO1_SWPORTA_DR寄存器组是写数据到输出引脚,alt_setbits_word 设定寄存器的指定位为1,如下语句是点亮LED
alt_clrbits_word设定寄存器的指定位为0
ALT_GPIO1_EXT_PORTA寄存器组是从输入引脚读数据,从而检查KEY是0还是1,(按下还是释放)
点亮LED的完整代码
如下是教材中提供的KEY控制LED的C程序:(根据错误提示进行一定修改),这部分采用DS-5软件来进行工程创建,并创建c文件。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!