【IMX6ULL驱动开发学习】14.Linux驱动开发 - GPIO中断(设备树 + GPIO子系统)

代码自取【14.key_tree_pinctrl_gpios_interrupt】:
https://gitee.com/chenshao777/imx6-ull_-drivers

主要接口函数:

1. of_gpio_count(获得GPIO的数量)

static inline int of_gpio_count(struct device_node *np)

2. kzalloc(向内核申请空间)

static inline void *kzalloc(size_t size, gfp_t flags)

3. of_get_gpio(获取GPIO子系统标号)

static inline int of_get_gpio(struct device_node *np, int index)

4. gpio_to_irq(根据GPIO子系统标号得到软件中断号)

static inline int gpio_to_irq(unsigned gpio)

5. request_irq(根据软件中断号发起请求中断)

static inline int __must_check
request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,const char *name, void *dev)

6. free_irq(释放中断)

void free_irq(unsigned int irq, void *dev_id)

针对正点原子IMX6ULL阿尔法开发板
设备树的写法:

hc_key {compatible   = "hc-key";pinctrl-name = "default";pinctrl-0    = <&pinctrl_key>;gpios        = <&gpio1  1 GPIO_ACTIVE_LOW&gpio1 18 GPIO_ACTIVE_LOW>;status = "okay";
};

驱动主要部分代码:

/* 按键中断函数 */
static irqreturn_t key_irq_handler(int irq, void *dev)
{struct gpio_irq *girq = dev;printk("key_irq happend, irq = %d, gpio = %d\n", girq->irq, girq->gpio);return IRQ_HANDLED;	
}.........
.........
........./* 匹配内核根据设备树生成的platform_device */
static int my_probe(struct platform_device *pdev)
{struct device_node *node = pdev->dev.of_node;int gpio_cnt,i,err;/* 获得GPIO个数 */gpio_cnt = of_gpio_count(node);/* 向内核申请空间,存储gpio号和irq */gp_irq = kzalloc(gpio_cnt * sizeof(struct gpio_irq), GFP_KERNEL);for(i = 0; i < gpio_cnt; i++){//获取GPIOgp_irq[i].gpio = of_get_gpio(node, i);//GPIO转换成中断号gp_irq[i].irq = gpio_to_irq(gp_irq[i].gpio);//中断请求err = request_irq(gp_irq[i].irq, key_irq_handler, IRQF_TRIGGER_FALLING, "hc_key_irq", &gp_irq[i]);}printk("my_probe run\n");return 0;
}

图片展示说明:
在这里插入图片描述
测试结果:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/8211.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用四元数表示旋转

旋转四元数以及如何使用它们 英文版参考链接:Quaternions 四元数&#xff0c;它是一种用四个实数表示复数的推广&#xff0c;可以用来高效地表示和计算三维空间中的旋转1。 旋转四元数的性质: All rotation quaternions must be unit quaternions.|q| 1For rotation quater…

Elasticsearch:使用 Redis 让 Elasticsearch 更快

Elasticsearch 是一个强大的搜索引擎&#xff0c;可让你快速轻松地搜索大量数据。但是&#xff0c;随着数据量的增长&#xff0c;响应时间可能会变慢&#xff0c;尤其是对于复杂的查询。在本文中&#xff0c;我们将探讨如何使用 Redis 来加快 Elasticsearch 搜索响应时间。 Re…

台阶仪是干什么的?在太阳能光伏行业能测什么?

太阳能作为应用广、无排放、无噪声的环保能源&#xff0c;在近些年迎来快速发展&#xff0c;而在各类型的太阳能电池及太阳能充电系统中&#xff0c;多会镀一层透明的ITO导电薄膜&#xff0c;其镀膜厚度对电池片的导电性能有着非常重要的影响&#xff0c;因而需要对镀膜厚度进行…

C/C++指针内存泄漏的原因详解及如何避免与问题定位

作为C/C开发人员&#xff0c;内存泄漏是最容易遇到的问题之一&#xff0c;这是由C/C语言的特性引起的。C/C语言与其他语言不同&#xff0c;需要开发者去申请和释放内存&#xff0c;即需要开发者去管理内存&#xff0c;如果内存使用不当&#xff0c;就容易造成段错误(segment fa…

Learn Mongodb 可是工具及基本命令的使用 ③

作者 : SYFStrive 博客首页 : HomePage &#x1f4dc;&#xff1a; PHP MYSQL &#x1f4cc;&#xff1a;个人社区&#xff08;欢迎大佬们加入&#xff09; &#x1f449;&#xff1a;社区链接&#x1f517; &#x1f4cc;&#xff1a;觉得文章不错可以点点关注 &#x1f44…

【H5】文件上传(ajax)

系列文章 【移动设备】iData 50P 技术规格 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/130604517 【H5】avalon前端数据双向绑定 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/131067187 【H5】安卓自动更新方案&a…

【Python实战】Python采集某大夫文字数据

前言 今天&#xff0c;有一位粉丝找到我&#xff0c;希望我出一期关于某大夫数据采集的文章&#xff0c;今天&#xff0c;我们就来采集某大夫的问诊数据。 环境使用 python 3.9pycharm 模块使用 requests 模块介绍 requests requests是一个很实用的Python HTTP客户端库&…

机器学习入门

AI人工智能 ANI 弱人工智能&#xff0c;狭义人工智能&#xff0c;指的是一种针对特定任务或领域进行优化的人工智能&#xff0c;例如语音识别、图像识别、自然语言处理、推荐系统 AGI 通用人工智能&#xff0c;强人工智能&#xff0c; ASI 超级人工智能&#xff0c;超人工智…

数字化升级提效85%,箭牌不止家居智能

近年来&#xff0c;随着人们对生活品质的追求不断提升&#xff0c;家居行业也逐渐朝着更加智能化、个性化、环保可持续和互联网的方向发展。有数据显示&#xff0c;2023年中国家居市场规模将达到2万亿元人民币&#xff0c;年复合增长率为8.3%。激烈的市场竞争之下&#xff0c;可…

霍夫变换车道线识别-车牌字符识别代码(matlab仿真与图像处理系列第5期)

1.车道线识别 当使用霍夫变换进行车道线识别时,可以按照以下步骤来编写 MATLAB 代码: 读入图像:使用imread函数读取包含车道线的图像。image = imread(lane_image.jpg);图像预处理:为了减少噪音和突出车道线,可以对图像进行预处理。通常,可以采用以下步骤:将图像转换为…

视频编码压缩基础

视频编码压缩基础 文章目录 视频编码压缩基础视频图像的质量评价帧率、分辨率和码率三者之间的关系 环路滤波研究背景 视频图像的质量评价 采用有损压缩的技术能显著降低码率&#xff0c;但是也会降低视频图像的质量&#xff0c;因此对于有损压缩算法&#xff0c;需要建立一套…

最小二乘支持向量机”在学习偏微分方程 (PDE) 解方面的应用(Matlab代码实现)

&#x1f4a5; &#x1f4a5; &#x1f49e; &#x1f49e; 欢迎来到本博客 ❤️ ❤️ &#x1f4a5; &#x1f4a5; &#x1f3c6; 博主优势&#xff1a; &#x1f31e; &#x1f31e; &#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 …