Linux imu6ull驱动- led
一、GPIO模块结构
开始来啃手册了,打开我们的imx6ull手册。本章我们编写的是GPIO的,打开手册的第28章,这一章就有关于IMX6ULL 的 GPIO 模块结构。

mx6ull一共有5 组 GPIO(GPIO1~GPIO5)
GPIO1 有 32 个引脚:GPIO1_IO0~GPIO1_IO31;
GPIO2 有 22 个引脚:GPIO2_IO0~GPIO2_IO21;
GPIO3 有 29 个引脚:GPIO3_IO0~GPIO3_IO28;
GPIO4 有 29 个引脚:GPIO4_IO0~GPIO4_IO28;
GPIO5 有 12 个引脚:GPIO5_IO0~GPIO5_IO11;
往下拉就能看到GPIO配置的寄存器功能框架图。
二、寄存器配置分析
根据上文的模块框图,我们知道GPIO 的控制涉及 4 大模块:CCM、IOMUXC、GPIO 模块本身。
1、CCM
参考资料:芯片手册《Chapter 32: IOMUX Controller (IOMUXC)》
功能:CCM 用于设置是否向 GPIO 模块提供时钟
①GPIOx 要用 CCM_CCGRy 寄存器中的 2 位来决定该组 GPIO 是否使能。哪组
GPIO 用哪个 CCM_CCGR 寄存器来设置。前面框图就有显示,使能对应GPIO组需要配置的寄存器位。


00:该 GPIO 模块全程被关闭
01:该 GPIO 模块在 CPU run mode 情况下是使能的;在 WAIT 或 STOP模式下,关闭
10:保留
11:该 GPIO 模块全程使能
例如:GPIO1、GPIO5 时钟控制:

2、IOMUXC
参考资料:芯片手册《Chapter 32: IOMUX Controller (IOMUXC)》。
功能:引脚的模式(Mode、功能)
框图:可以看到IOMUXC分为两个部分。对于某个/某组引脚,IOMUXC中有2个寄存器用来设置它:SW_MUX和SW_PAD

(1)SW_MUX(选择功能)。
对于选择寄存器,里面可以选择直接配置一个端口,也可以直接对一组引脚进行配置,这样子,对于我们有时候需要配置多个引脚,就可以直接配置一整组io。
(1)IOMUXC_SW_MUX_CTL_PAD_PADNAME> :Mux pad xxx,选择某个 pad 的功能。
(2)IOMUXC_SW_MUX_CTL_GRP_GROUP NAME>:Mux grp xxx,选择某组引脚的功能。
某个引脚,或是某组预设的引脚,都有8个可选的模式(alternate (ALT)MUX_MODE)。

比如:

(2)SW_PAD(设置上下拉电阻等参数)
对于设置上下拉电阻等参数寄存器,也是可以选择直接配置一个端口,或者直接对一组引脚进行配置。
(1)IOMUXC_SW_PAD_CTL_PAD_PAD_NAME>:pad pad xxx,设置某个pad的参数。
(2)IOMUXC_SW_PAD_CTL_GRP_GROUP NAME>:pad grp xxx,设置某组引脚的参数。

比如:

3、GPIO 模块
参考资料:芯片手册《Chapter 28: General Purpose Input/Output (GPIO)》
框图如下:

这里面我们需要关心3个寄存器:
(1)GPIOx_GDIR:设置引脚方向。
每位对应一个引脚,1-output,0-input。

(2)GPIOx_DR:设置输出引脚的电平。
每位对应一个引脚,1-高电平,0-低电平

(3)GPIOx_PSR:读取引脚的电平。
每位对应一个引脚,1-高电平,0-低电平

三、GPIO读写寄存器具体分析。
1、读GPIO。

翻译一下,具体步骤为:
(1)设置CCM_CCGRx寄存器中某位使能对应的GPIO模块 // 默认是使能的,上图省略了
(2)设置IOMUX来选择引脚用于GPIO
(3)设置GPIOx_GDIR中某位为0,把该引脚设置为输入功能
(4)读GPIOx_DR或GPIOx_PSR得到某位的值(读GPIOx_DR返回的是GPIOx_PSR的值)
2、写GPIO
翻译一下:
(1)设置CCM_CCGRx寄存器中某位使能对应的GPIO模块 // 默认是使能的,上图省略了
(2)设置IOMUX来选择引脚用于GPIO
(3)设置GPIOx_GDIR中某位为1,把该引脚设置为输出功能写GPIOx_DR某位的值。
需要注意的是,你可以设置该引脚的loopback功能,这样就可以从GPIOx_PSR中读到引脚的有实电平;你从GPIOx_DR中读回的只是上次设置的值,它并不能反应引脚的真实电平,比如可能因为硬件故障导致该引脚跟地短路了,你通过设置GPIOx_DR让它输出高电平并不会起效果。
相关文章:
Linux imu6ull驱动- led
一、GPIO模块结构 开始来啃手册了,打开我们的imx6ull手册。本章我们编写的是GPIO的,打开手册的第28章,这一章就有关于IMX6ULL 的 GPIO 模块结构。 mx6ull一共有5 组 GPIO(GPIO1~GPIO5) GPIO1 有 32 个引脚&…...
【 云原生 | K8S 】Kubernetes 概述
Kubernetes 概述 1 K8S 是什么? K8S 的全称为 Kubernetes (K12345678S),PS:“嘛,写全称也太累了吧,不如整个缩写”。 作用: 用于自动部署、扩展和管理“容器化(containerized)应用…...
边缘计算多角色智能计量插座:用电监测和资产管理的未来智能化引擎
目前主流的智能插座涵盖了红外遥控(控制空调和电视等带有红外标准的电器),配备着测温、测湿等仓库应用场景,配备了人体红外或者毫米波雷达作为联动控制,但是大家有没有思考一个问题,就是随着对接的深入&…...
mysql隐式转换转换引起的bug
生产环境中遇到一个情况情况 ,过滤数据发现过滤不掉相关值情况,具体情况如下 原始数据: CREATE TABLE test (id bigint(11) NOT NULL AUTO_INCREMENT COMMENT 自增id,subject_id bigint(11) NOT NULL DEFAULT 0 COMMENT 主题id,subject_nam…...
【Python】gevent模块实现协程模拟高并发
Python中GIL的存在,导致多线程一直不是很好用,相形之下,协程的优势就更加突出了。 Python通过yield提供了对协程的基本支持,但是不完全。而第三方的gevent为Python提供了比较完善的协程支持。 gevent是第三方库,通过gr…...
leetcode:2485. 找出中枢整数(python3解法)
难度:简单 给你一个正整数 n ,找出满足下述条件的 中枢整数 x : 1 和 x 之间的所有元素之和等于 x 和 n 之间所有元素之和。 返回中枢整数 x 。如果不存在中枢整数,则返回 -1 。题目保证对于给定的输入,至多存在一个中…...
asp.net core mvc之模型绑定、特性约束模型绑定、模型验证(服务器/客户端/远程)
一、不用模型绑定 数据类型都是string 1、UserController.cs public class UserController : Controller {public IActionResult Register(){return View();}[HttpPost]public IActionResult DoRegister(){//不用模型绑定 以前的方法取表单数据或Url的参数//数据类型都是s…...
AI诈骗防范:保护数字社会的安全前线
引言: 在当今数字化的时代,人工智能技术在各个领域都展现了巨大的潜力,然而,正是这些技术的广泛应用也催生了新的安全隐患。近期,AIGC在聊天、写作、绘画、编程等领域表现出色,但也被用于“AI换脸”、“AI换…...
(待完善)python学习参考手册
这里写目录标题 观前浅谈:学习路线 :学习心得笔记:Step1:简单但一问不知怎么的组织语言去回答的小问题:什么是提示符?python解释器是什么?请正在阅读本文的朋友,安装一下PyCharm以及如何进行科学的省钱:Python中的命令行模式和交互模式的区别是什么?请正在阅读本文的朋友安装…...
STM32-HAL库09-CAN通讯(loopback模式)
一、所用材料: STM32F103C6T6最小系统板 STM32CUBEMX(HAL库软件) MDK5 串口调试助手 二、所学内容: 初步学习如何使用STM32的CAN通讯功能,在本章节主要达到板内CAN通讯的效果,即32发送CAN信息再在CAN接收…...
jsvascript使用dhtmlXTreeObject的loadJSONObject绘制目录树
文章目录 1,引入dhtmlXTreeObject的css和js文件2,创建一棵目录树2.1,let tree new dhtmlXTreeObject(id-dhtmltree-0, "100%", "100%", 0);2.2,设置图片根目录(后续使用到的图片都是相对于该目录…...
LeetCode 17. 电话号码的字母组合 中等
题目 - 点击直达 1. 17. 电话号码的字母组合 中等1. 题目详情1. 原题链接2. 题目要求3. 基础框架 2. 解题思路1. 思路分析2. 时间复杂度3. 代码实现 3. 知识与收获 1. 17. 电话号码的字母组合 中等 1. 题目详情 1. 原题链接 LeetCode 17. 电话号码的字母组合 中等 2. 题目要…...
《GPT与AI助手:技术进步与就业前景》
随着人工智能的迅速发展,像GPT(Generative Pre-trained Transformer)这样的自然语言处理技术已经广泛应用于各个领域,各个互联网公司也纷纷推出了自己的AI助手来帮助创作、交流和解决问题。这一技术的广泛应用引发了一系列关于就业…...
线性代数 | 矩阵运算 加减 数乘 矩阵的幂运算
文章目录 1 矩阵加减和数乘2 矩阵与矩阵的乘法2.1 相乘条件:看中间,取两头2.2 相乘计算方法 3 矩阵的幂3.1 观察归纳法3.2 邻项相消法3.3 化为对角 4 判断是否可逆(证明题或者要求求出逆矩阵)4.1 直接观察4.2 由定义式推得4.2.1 待…...
Linux---(五)三大工具yum、vim、gcc/g++
文章目录 一、yum工具1.Linux中安装软件的方法:2.什么是yum?3.yum源更新 二、Linux编辑器--vim1.IDE例子2.vim(1)vim的常用模式及切换模式(2)底层模式常用命令(3)插入模式常用命令(…...
网络通信TCP、UDP详解
目录 IP 和端口 网络传输中的 2 个对象:server 和 client 两种传输方式:TCP/UDP TCP 和 UDP 原理上的区别 为何存在 UDP 协议 TCP/UDP 网络通信大概交互图 IP 和端口 所有的数据传输,都有三个要素 :源、目的、长度。 怎么表…...
Flutter笔记:绘图示例 - 一个简单的(Canvas )时钟应用
Flutter笔记 绘图示例 - 一个简单的(Canvas )时钟应用 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_2855…...
Bard和ChatGPT的一些比较
Bard和ChatGPT的一些比较 2023.11.8版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 选择正确的自动文本生成工具对企业至关重要。本文将详细分析谷歌 Bard 和 ChatGPT 的优缺点,以帮助企业做出明智的选择。无论企业关注的是客…...
centos7安装Nexus(Maven私服)与配置使用教程
之前有位大佬问我,他说有个第三方的Jar包,在idea导出库中使用,现在要部署上线测试,要如何导进去打包。 我说,不用那么麻烦,搞个Nexus私服,将Jar上传上去,然后配置Maven的setting文件…...
Azure 机器学习 - 有关为 Azure 机器学习配置 Kubernetes 群集的参考
目录 受支持的 Kubernetes 版本和区域建议的资源计划ARO 或 OCP 群集的先决条件禁用安全增强型 Linux (SELinux)ARO 和 OCP 的特权设置 收集的日志详细信息Azure 机器学习作业与自定义数据存储连接支持的 Azure 机器学习排斥和容许最佳实践 通过 HTTP 或 HTTPS 将其他入口控制器…...
大模型应用误区:RAG与垂域模型到底啥关系?老板必看!
本文深入解析了“垂域大模型”、“RAG”和“通用大模型”之间的关系,指出垂域大模型是针对特定行业进行深度优化的专家型模型,而RAG则是通过检索增强生成技术应用于通用大模型之上,属于通用模型的应用。文章强调RAG和垂域大模型在技术归属、底…...
计算机毕业设计:Python棉花种植生产智能监测与预测系统 Django框架 ARIMA算法 数据分析 可视化 爬虫 大数据 大模型(建议收藏)✅
博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ > 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与…...
Python基础-[面试]-救急知识速背
基础语法(15题)【基础语法】 问题:Python代码块是通过什么方式划分的? 答案:通过缩进(通常4个空格)划分代码块。【基础语法】 问题:Python中单行注释使用什么符号? 答案&…...
Session Startup:中描述的md文件是代码读取,还是 AI 操作?
Session Startup:文件是代码读取,还是 AI 操作? 核心结论:代码已经读取,Session Startup 只是声明。 🎯 直接答案 代码已经读取,Session Startup 只是声明。 📊 对比分析 项目 实际情况 谁读取文件? 代码,不是 AI 何时读取? 在 AI 启动前,系统构建 prompt 时 Se…...
基于YOLO26的六类犬种识别检测系统:mAP50达到0.895,推理速度2.4ms/张(项目源码+数据集+模型权重+UI界面+python+深度学习+远程环境部署)
摘要 本系统基于YOLO26目标检测算法,构建了一个面向六类常见犬种的智能识别检测模型。研究涵盖Beagle、bullDog、corgi、goldenRetriever、husky和pomeranian六个犬种类别,总数据集规模为1257张标注图像,其中训练集880张、验证集251张、测试…...
BODIPY FL-Fe₃O₄ NPs,BODIPY FL标记四氧化三铁纳米颗粒,主要应用
BODIPY FL-Fe₃O₄ NPs,BODIPY FL标记四氧化三铁纳米颗粒,主要应用BODIPY FL-Fe₃O₄ NPs(BODIPY FL标记四氧化三铁纳米颗粒)是一类将磁性无机纳米核与绿色荧光染料BODIPY FL耦合构建的多功能纳米体系,兼具磁响应与稳定…...
别再只测电压了!用ACS712和STM32给你的Arduino项目加上电流监控(附完整代码)
从零构建高精度电流监测系统:ACS712与STM32的实战指南 在智能硬件开发中,电流监测往往是被忽视却至关重要的环节。无论是评估设备功耗、保护电路安全,还是优化能源效率,精确的电流数据都能为项目带来质的飞跃。本文将带你深入探索…...
高薪诱惑!大厂AI实习生薪资暴涨6万,小白也能抓住未来机遇?速收藏!
大厂AI实习生薪资暴涨,顶尖学生月薪可达6万,是AI产业高速发展与人才短缺矛盾的结果。大厂争夺未来人才,实习生表现优异者几乎100%获高薪全职offer。高薪背后是供需失衡,大模型算法研发、AI Infra、AI应用研究等岗位最抢手。顶尖院…...
压差控制洁净工程:从洁净边界到系统稳定的完整解析
一、什么是压差控制洁净工程?压差控制洁净工程,是指在洁净厂房、实验室、生物医药空间、电子制造车间、检测中心以及其他受控环境中,通过送风、回风、排风、围护密封、自控调节和实时监测等手段,建立并维持不同房间之间稳定压力梯…...
基于 Redis 的分布式锁:原理剖析与 Spring Boot 实战(含看门狗续期)
一、什么是分布式锁?在单机应用中,我们常用synchronized、ReentrantLock解决多线程并发问题,但这些锁的作用域局限于单个 JVM 进程。当系统从单体架构演进为分布式集群时,多个服务实例、多个进程会并发操作共享资源(如…...
