正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-15.6讲 GPIO中断实验-GPIO驱动添加中断处理函数

本文主要是介绍正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-15.6讲 GPIO中断实验-GPIO驱动添加中断处理函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:

本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。

引用:

正点原子IMX6U仓库 (GuangzhouXingyi) - Gitee.com

《【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.5.2.pdf》

正点原子资料下载中心 — 正点原子资料下载中心 1.0.0 文档

正文:

本文是 “正点原子[第二期]Linux之ARM(MX6U)裸机篇--第15.6 讲” 的读书笔记。第15讲主要是介绍I.MX6U处理器GPIO中断控制实验。本节将参考正点原子的视频教程第15讲和配套的正点原子开发指南文档进行学习。

在第15.6讲视频教程中,正点原子会讲解了如何初始化gpio支持中断模式,并且如何启用gpio中断,如何关闭gpio中断,如何读取gpio的中断标志位,在中断处理结束之后如何清除gpio外设的中断标志位。

0. 概述

本章实验的功能和之前按键控制蜂鸣器的实验一样,只是按键采用中断的方式来处理。当按下KEY0以后就打开蜂鸣器,再次按下蜂鸣器KEY0就关闭蜂鸣器。

1. gpio按键电路原理分析

如之前按键KEY实验中分析的过的,正点原子I.MX6ULL ALPHA/Mini开发板的按键KEY0接 I.MX6ULL 处理器的 "UART1_CTS_B" 引脚。

当按键KEY0按下时,当默认按键松开时GPIO读取到高电平,当按键按下时GPIO读取到低电平。通过读取GPIO输入引脚的电平,当读取到低电平是说明按键KEY0被按下。

1.2 按键消抖

当然,如之前按键KEY0实验分析的那样还需要在检测到KEY0被按下时对按键进行消抖处理,防止按键按下瞬间的高低电平抖动操作按键被判断为多次误触发。

理想的按键的按键电平变化

实际按键的电平变化过程

2. 配置GPIO复用,GPIO方向

将I.MX6U处理器的 "UART1_CTS_B" 引脚配置为按键KEY0的gpio引脚输入input模式需要如下几步,我们在之前的按键实验里已经分析过,这里不再详细描述。

  1. 配置 "UART1_CTS_B" 引脚复用为 GPIO1_IO18 模式
  2. 配置"UART1_CTS_B" 引脚的电气特性,包括压摆率,下拉电阻,磁滞特性,等属性。
  3. 配置GPIOx_GIDR 寄存器,设置GPIO的输出方向是Output输出还是Input输入。
  4. 对于GPIO输出模式的话,写GPIOx_DR寄存器的对应bit位来控制GPIO的输出是低电平还是高高电平。

3. 配置GPIO中断模式

GPIO引脚作为input输入时可以根据GPIO引脚上的电平变化来触发中断,我们可以通过按键KEY0的 GPIO1_IO18 引脚的电平变化来触发gpio中断的方式来检测按键是否被按下。

在之前的按键KEY0实验里,我们通过处理器不断地循环来检测按键是否被按下,当处理器不停的循环检测按键的电平时处理器什么也不能干,这就造成了处理器资源的浪费。使用中断的方式可以极大的提高处理器系统的运行效率。

I.MX6U 处理器的GPIO输入接口中断通过寄存器 "GPIOx_ICR1, GPIOx_MR, GPIOx_ISR, GPIOx_EDGE_SEL" 来配置启用/关闭,GPIO输入中断触发类型(低电平触发,高电频触发,电平下降沿触发,电平上上沿触发,电平上升下降沿都触发)。

这篇关于正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-15.6讲 GPIO中断实验-GPIO驱动添加中断处理函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/992699

相关文章

Linux之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

usb接口驱动异常问题常用解决方案

《usb接口驱动异常问题常用解决方案》当遇到USB接口驱动异常时,可以通过多种方法来解决,其中主要就包括重装USB控制器、禁用USB选择性暂停设置、更新或安装新的主板驱动等... usb接口驱动异常怎么办,USB接口驱动异常是常见问题,通常由驱动损坏、系统更新冲突、硬件故障或电源管理设置导致。以下是常用解决

Linux命令之firewalld的用法

《Linux命令之firewalld的用法》:本文主要介绍Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux命令之firewalld1、程序包2、启动firewalld3、配置文件4、firewalld规则定义的九大

Linux之计划任务和调度命令at/cron详解

《Linux之计划任务和调度命令at/cron详解》:本文主要介绍Linux之计划任务和调度命令at/cron的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux计划任务和调度命令at/cron一、计划任务二、命令{at}介绍三、命令语法及功能 :at

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、

Linux ls命令操作详解

《Linuxls命令操作详解》通过ls命令,我们可以查看指定目录下的文件和子目录,并结合不同的选项获取详细的文件信息,如权限、大小、修改时间等,:本文主要介绍Linuxls命令详解,需要的朋友可... 目录1. 命令简介2. 命令的基本语法和用法2.1 语法格式2.2 使用示例2.2.1 列出当前目录下的文