当前位置: 首页 > news >正文

Zynq-7000、FMQL45T900的GPIO控制(五)---linux应用层配置GPIO输出控制

上文中详细阐述了对应原理图MIO/EMIO的编号,怎么计算获取linux下gpio的编号

 本文涉及C代码上传,下载地址

Zynq-7000、FMQL45T900的GPIO控制c语言代码资源-CSDN文库

本文详细记录一下针对获取到gpio的编号,进行配置输出模式,并进行C语言编码控制

这里以FMQL45T900为例,zynq-7000的操作流程都是一样的,只是需要操作的GPIO的管脚计算不同

主要步骤是,导出对应GPIO对应节点,配置方向、反复拉高拉低管脚电平

	gpio_export(&test_pin_mesg);//生成gpio节点gpio_direction(&test_pin_mesg);//设置方向while(1){gpio_write(&test_pin_mesg, 1);sleep(1);gpio_write(&test_pin_mesg, 0);sleep(1);}

shell指令操作

导出节点

echo 434 > /sys/class/gpio/export

查看节点

ls /sys/class/gpio/gpio434/

设置输出模式

echo out > /sys/class/gpio/gpio434/direction

查看配置模式

cat /sys/class/gpio/gpio434/direction

设置管脚电平

echo 1 > /sys/class/gpio/gpio434/value

FMQL45T900实际开发板上进行测试如下图,zynq-7000的流程也是一样,只是导出的GPIO节点不一样

使用的测试C代码如下

编译脚本文件

#!/bin/bashCC=arm-linux-gnueabihf-gcc${CC} gpio_test_output.c -o gpio_test_output

涉及的关键函数


static int gpio_export(struct pin_mesg* mesg){  char name[4];  int fd,len;  fd = open("/sys/class/gpio/export", O_WRONLY);if (fd < 0) {perror("open export");return(-1);}len = sprintf(name, "%d", mesg->pin);  dbg_info("gpiopin = gpio%s\n",name);if (write(fd, name, sizeof(name)) < 0) {  perror("write export");return -1;  }  close(fd);  return 0;  
}  
static int gpio_direction(struct pin_mesg* mesg){  char path[64];  int fd,res;char *dir;if(mesg->inout_flags & IN)dir = "in";if(mesg->inout_flags & OUT)dir = "out";sprintf(path,"/sys/class/gpio/gpio%d/direction", mesg->pin);dbg_info("direction path: %s,direction = %s\n", path, dir);  fd = open(path, O_WRONLY);if (fd < 0) {perror("open direction");return -1;  }  res = write(fd, dir, sizeof(dir));if (res <= 0) {perror("write direction");return -1;}close(fd);return 0;
}

开发板实际测试结果如下图

使用的C代码,下载地址

Zynq-7000、FMQL45T900的GPIO控制c语言代码资源-CSDN文库

用这几篇帖子深入探讨一下ZYNQ-7000/FMQL45T900的GPIO相关设计,都说GPIO最简单,这样记录下来起始还是很费劲的。可以根根据需求,直接跳转到相关的内容

Zynq-7000、FMQL45T900的GPIO控制(一)-----SDK配置GPIO普通输入输出模式,以及GPIO编号_大牛攻城狮的博客-CSDN博客

Zynq-7000、FMQL45T900的GPIO控制(二)-----SDK配置GPIO外部中断输入_大牛攻城狮的博客-CSDN博客

Zynq-7000、FMQL45T900的GPIO控制(三)---linux管脚编号计算_大牛攻城狮的博客-CSDN博客

Zynq-7000、FMQL45T900的GPIO控制(四)---linux应用层配置GPIO输入控制_大牛攻城狮的博客-CSDN博客

Zynq-7000、FMQL45T900的GPIO控制(五)---linux应用层配置GPIO输出控制_大牛攻城狮的博客-CSDN博客

Zynq-7000、FMQL45T900的GPIO控制(六)---linux驱动层配置GPIO输入输出控制_大牛攻城狮的博客-CSDN博客

(1条消息) Zynq-7000、FMQL45T900的GPIO控制(七)---linux驱动层配置GPIO中断输入_大牛攻城狮的博客-CSDN博客

http://www.lryc.cn/news/63365.html

相关文章:

  • 带你搞懂人工智能、机器学习和深度学习!
  • Android 11.0 framework中Launcher的启动流程分析
  • 2023年第十五届华中杯赛题C 题 空气质量预测与预警
  • Go官方指南(一)包、变量、函数
  • liunx笔记
  • vue3 封装ECharts组件
  • Spring Security 6.0系列【30】授权服务器篇之JOSE规范
  • 维度表设计原则
  • 【requests模块上】——02爬虫基础——如桃花来
  • Springboot +Flowable,详细解释啥叫流程实例(一)
  • 信息安全复习十:Web与电子商务安全
  • flutter 启动其他app server或者页面失败
  • 【linux-进程2】进程控制
  • 【五一创作】多域名环境和Office 365混合部署方案
  • Vue:路由route
  • Windows系统被faust勒索病毒攻击勒索病毒解密服务器与数据库解密恢复
  • Java面试题总结 | Java面试题总结7- Redis模块(持续更新)
  • 虹科案例 | 如何通过智能、非接触式测量解决方案,提高起重机的安全和效率?
  • 流程图拖拽视觉编程-流程编辑器
  • 6.hashcode与equals区别与联系
  • 智能家居“落地者”:三翼鸟用场景方案持续链接大众消费
  • 【MATLAB图像处理实用案例详解(12)】——利用BP神经网络实现图像压缩
  • java学习之枚举
  • IPsec中IKE与ISAKMP过程分析(主模式-消息2)
  • KDZR-10A三相直流电阻测试仪
  • C语言入门篇——指针篇
  • Python小姿势 - Python学习笔记:如何使用Python创建一个简单的计算器
  • 庖丁解牛 - FLAME: Taming Backdoors in Federated Learning
  • C++设计模式20:状态模式
  • Embarcadero Delphi 11 和 C++Builder 11 免费社区版发布!