【linux学习---1】点亮一个LED---驱动一个GPIO

文章目录

1、原理图找对应引脚



从上图 可以看出, 蜂鸣器 接到了 BEEP 上, BEEP 就是 GPIO5_IO05

2、IO复用

查找IMX6UL参考手册

和 STM32一样,如果某个 IO 要作为某个外设引脚使用的话, 是需要配置复用寄存器的。

3、IO配置



4、GPIO配置

此寄存器是 32 位的,一个 GPIO 组最大只有 32 个 IO,因此 DR 寄存器中的每个位都对应

一个 GPIO。当 GPIO 被配置为输出功能以后,向指定的位写入数据那么相应的 IO 就会输出相

应的高低电平,比如要设置 GPIO1_IO00 输出高电平,那么就应该设置 GPIO1.DR=1。

GDIR 寄存器也是 32 位的,此寄存器用来设置某个 IO 的工作方向,是输入还是输出。同

样的,每个 IO 对应一个位,如果要设置 GPIO 为输入的话就设置相应的位为 0,如果要设置为

输出的话就设置为 1。比如要设置 GPIO1_IO00 为输入,那么 GPIO1.GDIR=0;

同样的 PSR 寄存器也是一个 GPIO 对应一个位,读取相应的位即可获取对应的 GPIO 的状

态,也就是 GPIO 的高低电平值。功能和输入状态下的 DR 寄存器一样








IMR 寄存器也是一个 GPIO 对应一个位, IMR 寄存器用来控制 GPIO 的中断禁止和使能,

如果使能某个 GPIO 的中断,那么设置相应的位为 1 即可,反之,如果要禁止中断,那么就设

置相应的位为 0 即可。例如,要使能 GPIO1_IO00 的中断,那么就可以设置 GPIO1.MIR=1 即

可

ISR 寄存器也是 32 位寄存器,一个 GPIO 对应一个位,只要某个 GPIO 的中断发生,那么

ISR 中相应的位就会被置 1。所以,我们可以通过读取 ISR 寄存器来判断 GPIO 中断是否发生,

相当于 ISR 中的这些位就是中断标志位。当我们处理完中断以后,必须清除中断标志位,清除

方法就是向 ISR 中相应的位写 1,也就是写 1 清零。

EDGE_SEL 寄存器用来设置边沿中断,这个寄存器会覆盖 ICR1 和 ICR2 的设置,同样是一

个 GPIO 对应一个位。如果相应的位被置 1,那么就相当与设置了对应的 GPIO 是上升沿和下降

沿(双边沿)触发。例如,我们设置 GPIO1.EDGE_SEL=1,那么就表示 GPIO1_IO01 是双边沿触

发中断,无论 GFPIO1_CR1 的设置为多少,都是双边沿触发。

5、GPIO时钟使能


6、总结

总结一下,要将 I.MX6UL的 IO 作为 GPIO 使用,我们需要一下

几步:

①、使能 GPIO 对应的时钟。

②、设置寄存器 IOMUXC_SW_MUX_CTL_PAD_XX_XX,设置 IO 的复用功能,使其复用

为 GPIO 功能。

③、设置寄存器 IOMUXC_SW_PAD_CTL_PAD_XX_XX,设置 IO 的上下拉、速度等等。

④、第②步已经将 IO 复用为了 GPIO 功能,所以需要配置 GPIO,设置输入/输出、是否使

用中断、默认输出电平等。

相关推荐
東隅已逝,桑榆非晚6 分钟前
AVL数实现
c++·笔记·学习·算法
m4Rk_20 分钟前
【论文阅读】Agent 记忆机制(116):Hybrid Memory——用互补策展与离线巩固构建长期记忆
论文阅读·人工智能·学习·开源·github
一条泥憨鱼33 分钟前
【Kafka】零基础学习教程
java·分布式·学习·kafka
CAIE研习社1 小时前
30岁以后学习AI应用,证书能起到什么作用?
人工智能·学习
叼烟扛炮1 小时前
Linux 学习笔记(四十五):Web 安全基石——Cookie、Session 与 HTTPS 原理解析
linux·前端·网络·笔记·学习·tcp/ip·安全
zhangrelay2 小时前
Arduino-MEGA-ESP单片机理论课笔记-01入门-02硬件-03开发环境-2026
笔记·单片机·嵌入式硬件·学习·机器人
01二进制代码漫游日记2 小时前
[C++]之内存管理(一)
jvm·c++·学习
椒颜皮皮虾྅3 小时前
让 C# 读懂整张图:DeploySharp 驱动 PaddleOCR v4/v5/v6,打通 OCR 全流程
开发语言·人工智能·深度学习·学习·c#·ocr·cuda
Java后端的Ai之路3 小时前
01、Java并发编程:学习攻略如何才能学好并发编程?
java·开发语言·学习
corey933 小时前
Linux 学习 - 第十四周作业
linux·运维·学习