【二】9.关于pinctrl和gpio子系统

article/2025/8/27 13:07:04

前言:

       为什么要有pinctrl和gpio子系统呢?--->>>因为LZ不在想推着凯迪拉克其上班了。

1.pinctrl子系统:

        因为 ST 针对 STM32MP1 提供的 Linux 系统中,其 pinctrl 配置的电气属性只能在platform 平台下被引用,前面的实验都没用到 platform,所以 pinctrl 配置是不起作用的!

            L内核针对系统PIN的配置,如复用功能、速度、上下拉和驱动力等。

        在“stm32mp151.dtsi”中有如下代码:    

                

        对于STM32MP1来说,其中 PA~PK 这 9 组 GPIO 的寄存器都在一起,起始地址为0X50002000,终止地址为0X5000C3FF。这个可以在《STM32MP157 参考手册》里面找到。PZ 组寄存器起始地址为0X54004000,终止地址为 0X540043FF,所以 stm32mp151.dtsi 文件里面还有个名为“pinctrl_z”的子节点来描述 PZ 组 IO。pinctrl 节点用来描述 PA~PK 这 11 组 IO,因此 ranges 属性中的0x50002000 表示起始地址,0xa400 表示寄存器地址范围。

        

        pinctrl子系统中子节点的存放的引脚外设信息:

                (1)pinmux属性:pinmux = <STM32_PINMUX(port, line, mode)>;

                            例如:pinmux = <STM32_PINMUX('H', 13, AF9)>;

                            port:表示用那一组 GPIO(例:H 表示为 GPIO 第 H 组,也就是 GPIOH)。

                            line:表示这组 GPIO 的第几个引脚(例:13 表示为 GPIOH_13,也就是 PH13)。

                            mode:表示当前引脚要做那种复用功能。

                (2)电气特性:互斥分组3-2-2-1。

                

        

        设备树里同一个PIN被被多个外设定义了:PH13 做了 FDCAN1 的 TX 功能,还能做 UART4 的 TX 功能,不是冲突了吗?这是不会冲突的,因为 pinctrl 驱动只会把设备树 pinctrl 节点解析出来的数据存储到一个链表里,只有当外设调用这个 pinctrl 节点的时候才会真的使用。但是,如果你要同时使用 FDCAN1 和 UART4 的话就会出问题,因此 PH13 同一时间只能用于一个外设,所以为了方便开发,还是建议大家一个 PIN 最好只能被一个外设使用。

        如何添加一个pinctrl节点:(在&pinctrl节点追加gpio-led子节点)、(打开 stm32mp15-pinctrl.dtsi 文件,STM32MP1 的所有引脚 pinctrl 配置都是在这个文件里面完成的)。

            

2.gpio子系统:

        (如果pinctrl将一个PIN复用为GPIO的话,那么就会用到gpio子系统了。)

            L内核针对GPIO的电气属性配置,如复用输入/输出的方向和状态等。

int gpio_request(unsigned gpio, const char *label)

void gpio_free(unsigned gpio)

int gpio_direction_input(unsigned gpio)

int gpio_direction_output(unsigned gpio, int value)

#define gpio_get_value __gpio_get_value

int __gpio_get_value(unsigned gpio)

#define gpio_set_value __gpio_set_value

void __gpio_set_value(unsigned gpio, int value)

        如何添加一个gpio节点:(在stm32mp157d-atk.dts文件的根节点“/”下创建LED灯的gpio子节点)

            其中“GPIO_ACTIVE_LOW”是枚举类型,如下:可做或运算组合。


http://www.hkcw.cn/article/HujqEHmCRG.shtml

相关文章

能源领域新兴技术论坛:EMQ 实时数据引擎构建工业智能中枢

5 月 26 日&#xff0c;由沙特阿美亚洲公司主办的能源领域新兴技术论坛在上海顺利举行。本次论坛聚焦智能工厂、无人机与机器人、可靠性与完整性、先进材料四大技术赛道&#xff0c;吸引了来自全球的能源企业、技术供应商及行业专家。 作为业内知名的 MQ AI 实时数据与智能产…

NC52 有效括号序列【牛客网】

文章目录 零、原题链接一、题目描述二、测试用例三、解题思路四、参考代码 零、原题链接 NC52 有效括号序列 一、题目描述 二、测试用例 三、解题思路 基本思路&#xff1a;   使用栈进行括号匹配具体思路&#xff1a; 构建括号和数字映射&#xff0c;这样后面就不用写一堆…

Sqlalchemy 连mssql坑

连接失败: (pyodbc.OperationalError) (08001, [08001] [Microsoft][ODBC Driver 17 for SQL Server]SSL Provider: [error:0A00014D:SSL routines::legacy sigalg disallowed or unsupported] (-1) (SQLDriverConnect)) (Background on this error at: https://sqlalche.me/e/…

乾元通渠道商中标青海省自然灾害应急能力提升工程基层防灾项目

近日&#xff0c;乾元通渠道商中标青海省自然灾害应急能力提升工程基层防灾项目&#xff0c;乾元通作为设备厂家&#xff0c;为项目提供通信指挥类装备&#xff08;多链路聚合设备&#xff09;QYT-X1。 青岛乾元通数码科技有限公司作为国家应急产业企业&#xff0c;深耕于数据调…

记一次edu未授权访问漏洞

首先进入该网址是一个登录界面&#xff0c;查看源代码&#xff0c;找到js文件&#xff0c;发现存在js.map前端信息泄露&#xff0c;于是我们进行js还原。 得到前端的一些源代码&#xff0c;以及路由API等&#xff0c;我们就可以通过这个源代码&#xff0c;进行目录遍历&#xf…

Python----目标检测(《用于精确目标检测和语义分割的丰富特征层次结构》和R-CNN)

一、《用于精确目标检测和语义分割的丰富特征层次结构》 1.1、基本信息 原文标题&#xff1a;Rich feature hierarchies for accurate object detection and semantic segmentation 中文译名&#xff1a;用于精确目标检测与语义分割的丰富特征层次结构 版本&#xff1a;第5版技…

50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | Split Landing Page(拆分展示页)

&#x1f4c5; 我们继续 50 个小项目挑战&#xff01;—— SplitLandingPage 组件 仓库地址&#xff1a;https://github.com/SunACong/50-vue-projects 项目预览地址&#xff1a;https://50-vue-projects.vercel.app/ 在这篇文章中&#xff0c;我们将实现一个交互式的左右面板…

Dif-Fusion:第一个基于扩散模型实现的红外光与可见光图像融合的论文

1. 论文介绍 论文主要创新点&#xff1a;提出了第一个基于扩散模型 (Diffusion) 实现的红外光与可见光图像融合模型&#xff0c;但模型不止简单的依赖于 Diffusion&#xff0c;而是一个新颖的 two-stage 的图像融合模型。 Dif-Fusion 利用扩散模型的生成能力&#xff0c;直接在…

Java开发经验——阿里巴巴编码规范实践解析5

摘要 这篇文章主要介绍了阿里巴巴Java开发规范中关于安全和性能优化的实践解析。内容涵盖了配置文件密码加密、用户输入内容风控、SQL注入防护、参数有效性验证、XSS攻击防护、CSRF安全验证、文件上传安全检查、防重放机制等多个方面&#xff0c;通过正反示例和推荐做法&#…

如何在python3.8环境中安装pytorch

我的conda配置了两个独立环境&#xff1a; base环境 - 安装有Python 3.12及各类依赖包&#xff1b;pytorch环境 - 基于Python 3.8创建&#xff0c;包含特定功能包。 在Anaconda Prompt中激活您的PyTorch环境&#xff1a; 访问PyTorch官网历史版本页面&#xff08;https://pyt…

源的企业级网络安全检测工具Prism X(棱镜X)

Prism X&#xff08;棱镜X&#xff09;是由yqcs团队自主研发的开源网络安全检测解决方案&#xff0c;专注于企业级风险自动化识别与漏洞智能探测。该工具采用轻量化架构与跨平台设计&#xff0c;全面兼容Windows、Linux及macOS操作系统&#xff0c;集成资产发现、指纹鉴别、弱口…

ADB识别手机系统弹授权框包含某段文字-并自动点击确定按钮

ADB识别手机系统弹授权框包含某段文字-并自动点击确定按钮 --蓝牙电话App自动部署 上一篇&#xff1a;手机打电话时将对方DTMF数字转为RFC2833发给局域网SIP坐席 下一篇&#xff1a;编写中。 一、前言 蓝牙电话方案中&#xff0c;我们提供了将手机通话的语音拦截后转发到局域…

kafka 常用知识点

文章目录 前言kafka 常用知识点1. kafka 概念2. 消息共享和广播3. 分区和副本数量奇偶数 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff0…

什么是接口测试,我们如何实现接口测试?

1. 什么是接口测试 顾名思义&#xff0c;接口测试是对系统或组件之间的接口进行测试&#xff0c;主要是校验数据的交换&#xff0c;传递和控制管理过程&#xff0c;以及相互逻辑依赖关系。其中接口协议分为HTTP,WebService,Dubbo,Thrift,Socket等类型&#xff0c;测试类型又主要…

我这三年……测试开发工作的一点感悟

从职场小白到测试开发&#xff0c;已经三年有余。回首这段职业旅程&#xff0c;踩过坑&#xff0c;吃过饼&#xff0c;背过锅&#xff0c;也拿过奖。和产品互掐&#xff0c;和开发干仗……也许这就是成长的代价和难忘的经历吧。今天忍不住跟宝子们分享分享我的这段心路历程 初…

[HIT计算机系统大作业] 程序人生-Hello‘s P2P

2025年5月 摘 要 本文以Hello程序为研究载体&#xff0c;系统探究其从源代码到可执行文件再到进程生命周期的完整流程&#xff0c;深度解析计算机系统多层面协同机制。首先阐述预处理、编译、汇编及动态链接的核心步骤&#xff1a;通过gcc工具链生成hello.i&#xff08;预处…

HIT-ICS 2025春计算机系统大作业 程序人生-Hello’s P2P

摘 要 本报告通过分析hello程序从hello.c源代码到进程终止的完整生命周期,系统阐述了计算机系统的多层次协作机制。首先,通过预处理、编译、汇编与链接阶段,将C语言源代码转换为可执行文件;其次,结合进程管理、存储管理及输入输出管理,深入探讨了进程创建、地址空间转换…

Hello的程序人生

计算机系统 大作业 题 目 程序人生-Hello’s P2P 专 业 未来技术模块 学   号 2023111680 班   级 23WLR14 学 生 姜虹伯 指 导 教 师 吴锐   计算机…

程序人生hello.c

计算机科学与技术学院 2024年5月 摘 要 本文系统分析了HELLO程序从源代码到执行的完整生命周期&#xff0c;揭示了编译系统与操作系统协同工作的底层机制。研究以Ubuntu环境和GCC工具链为基础&#xff0c;覆盖预处理、编译、汇编、链接四大阶段&#xff1a;预处理阶段展开宏…

哈尔滨工业大学HIT-ICS2024大作业-程序人生-Hello‘s P2P

第1章 概述 1.1 Hello简介 ①P2P&#xff1a;这一过程是指 Hello如何从C源文件经过预处理转变为可执行文件&#xff0c;这一过程共需经历四个阶段&#xff1a; 1&#xff09;预处理器处理&#xff0c;生成文本文件hello.i 2&#xff09;编译器处理&#xff0c;生成汇编程序…