ZYNQ嵌入式设点亮LED整理

学习记录


PL部分设计较为简单,省略不表。

代码设计

#include "xparameters.h" //器件参数信息
#include "xstatus.h"     //包含XST_FAILURE和XST_SUCCESS的宏定义
#include "xil_printf.h"  //包含print()函数
#include "xgpiops.h"     //包含PS GPIO的函数
#include "sleep.h"       //包含sleep()函数

开头定义相关头文件

//宏定义GPIO_DEVICE_ID
#define GPIO_DEVICE_ID      XPAR_XGPIOPS_0_DEVICE_ID
//连接到MIO的LED
#define EMIOLED0    54     //连接到EMIO54
#define EMIOLED1    55     //连接到EMIO55

定义相关宏定义

XGpioPs Gpio;            // GPIO设备的驱动程序实例

定义全局变量

int main()
{
    int Status;
    XGpioPs_Config *ConfigPtr;

    print("MIO Test! \n\r");
    ConfigPtr = XGpioPs_LookupConfig(GPIO_DEVICE_ID);
	//根据器件ID查找配置信息
    Status = XGpioPs_CfgInitialize(&Gpio, ConfigPtr, ConfigPtr->BaseAddr);
	//根据配置信息初始化 Gpio driver
    if (Status != XST_SUCCESS){
        return XST_FAILURE;
    }
    //设置指定引脚的方向:0输入,1输出
    XGpioPs_SetDirectionPin(&Gpio, EMIOLED0, 1);
    XGpioPs_SetDirectionPin(&Gpio, EMIOLED1, 1);

    //使能指定引脚输出:0禁止输出使能,1使能输出
    XGpioPs_SetOutputEnablePin(&Gpio, EMIOLED0, 1);
    XGpioPs_SetOutputEnablePin(&Gpio, EMIOLED1, 1);

    while (1) {
        XGpioPs_WritePin(&Gpio, EMIOLED0, 0x0); //向指定引脚写入数据:0或1
        XGpioPs_WritePin(&Gpio, EMIOLED1, 0x0);
        sleep(1);                              //延时1秒
        XGpioPs_WritePin(&Gpio, EMIOLED0, 0x1);
        XGpioPs_WritePin(&Gpio, EMIOLED1, 0x1);
        sleep(1);
    }
    return XST_SUCCESS;
}

主函数

代码分析

  1. 添加头文件
    器件参数信息、包含宏定义的头文件、print函数、GPIO函数、sleep函数都不可或缺
  2. 添加宏定义
    宏定义GPIO_DEVICE_ID以及相关管脚
  3. 添加全局变量
    GPIO设备的驱动程序实例
  4. 主函数
  • 定义状态变量
  • 定义GPIO配置指针变量
  • 根据器件ID.查找配置信息并返回给指针变量
  • 使用指针变量初始化gpio driver
  • 检查初始化是否成功
  • 设定引脚方向
  • 使能引脚输出
  • while循环设置引脚高低电平

参考文献

参考正点原子《领航者 ZYNQ 之嵌入式开发指南》

都看到这了,给文章点个赞再走吧
   ||
   V

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值