当前位置: 首页 > news >正文

新星杯-ESP32智能硬件开发--ESP32的I/O组成

本博文内容导读📕🎉🔥

ESP32系统的基础外设开发:IO_MUX和GPIO矩阵

 IO_MUX和GPIO矩阵

ESP32的I/O组成了与外部世界交互的基础,ESP32芯片有34个物理GPIO引脚。每个引脚都可用作一个通用I/O,或者连接一个内部的外设信号。

数字引脚(控制信号:FUN_SEL、IE、OE、WPU、WDU等)、162个外设输入和176个外设输出信号(控制信号:SIG_IN_SEL、SIG_OUT_SEL、IE、OE等)、快速外设输入/输出信号(控制信号:IE、OE等)以及RTC IO_MUX之间的信号选择和连接关系,构成了ESP32的I/O复用和GPIO交换矩阵。

IO_MUX、RTC、IO_MUX和GPIO交换矩阵用于将信号从外设传输至GPIO引脚,这些模块共同组成了芯片的I/O控制。ESP32芯片的34个物理GPIO引脚编号为:0~19、21~23、25~27、32~39。其中,GPIO 34~39仅用作输入引脚,其他的既可以作为输入又可作为输出引脚。

1. IO_MUX中每个GPIO引脚有一组寄存器

可以配置成GPIO功能,连接GPIO交换矩阵。

也可以直连功能,旁路了GPIO交换矩阵,快速信号,如:以太网、SDIO、SPI、JTAG、UART等会旁路GPIO交换矩阵以实现更好的高频数字特性,所以高速信号会直接通过IO_MUX输入/输出。

2. GPIO交换矩阵是外设输入/输出信号和引脚之间的全交换矩阵

芯片输入方向:162个外设输入信号都可以选择任意一个GPIO引脚的输入信号。

芯片输出方向:每个GPIO引脚输出信号可为176个外设输出信号中的任意一个。

3. RTC IO_MUX用于控制GPIO引脚的低功耗和模拟功能

只有部分GPIO引脚具有这些功能,包括引脚0、2、4、12~15、25~27、32~39。        

因此,输入和输出的方式有如下几种:通过GPIO交换矩阵的外设输入/输出、IO_MUX的直接I/O功能、RTC IO_MUX的I/O功能。

通过GPIO矩阵的外设输入

为实现通过GPIO交换矩阵接收外设输入信号,需要配置GPIO交换矩阵从34个GPIO(0~19、21~23、25~27、32~39)中获取外设输入信号的索引号(0~18、23~36、39~58、61~90、95~124、140~155、164~181、190~195、198~206)。输入信号通过IO_MUX从GPIO引脚中读取。IO_MUX必须设置相应引脚为GPIO功能,这样GPIO引脚的输入信号就可进入GPIO交换矩阵,然后通过GPIO交换矩阵进入选择的外设输入。

把某个外设信号Y绑定到某个GPIO引脚X的配置过程为:

(1)在GPIO交换矩阵中配置外设信号Y的GPIO_FUNCy_IN_SEL_CFG寄存器,设置GPIO_FUNCy_IN_SEL字段为要读取的GPIO引脚X的值,清空GPIO引脚的其他字段。

(2)在GPIO交换矩阵中配置GPIO引脚X的GPIO_FUNCx_OUT_SEL_CFG寄存器、清空GPIO_ENABLE_DATA[x]字段。要强制引脚的输出状态始终由GPIO_ENABLE_DATA[x]字段决定,则将GPIO_FUNCx_OUT_SEL_CFG寄存器的GPIO_FUNCx_OEN_SEL字段位置为1。GPIO_ENABLE_DATA[x]字段在GPIO_ENABLE_REG(GPIOs 0~31)或GPIO_ENABLE1_REG(GPIOs 32-39)中,清空此位可以关闭GPIO引脚的输出。

(3)配置IO_MUX寄存器来选择GPIO交换矩阵。配置GPIO引脚X的IO_MUX_x_REG。设置功能字段(MCU_SEL)为GPIO X的IO_MUX功能(引脚功能3,数值为2)。置位FUN_IE使能输入。置位或清空FUN_WPU和FUN_WPD位,使能或关闭内部上拉/下拉电阻器。

(4)GPIO输入情况,GPIO_IN_REG/GPIO_IN1_REG寄存器存储着每一个GPIO引脚的输入值。任意GPIO引脚的输入值都可以随时读取,而无须为某一个外设信号配置GPIO交换矩阵。但是,需要为引脚X的IO_MUX_x_REG寄存器配置FUN_IE位以使能输入。

通过GPIO矩阵的外设输出

为实现通过GPIO交换矩阵输出外设信号,需要配置GPIO交换矩阵将输出索引号为(0~18、23~37、61~121、140~215、224~228的外设信号输出到28个GPIO (0~19、21~23、25~27、32~33)。输出信号从外设输出到GPIO交换矩阵,然后到达IO_MUX。IO_MUX必须设置相应引脚为GPIO功能,这样输出GPIO信号就能连接到相应引脚,如图所示。

其中,输出索引号为224~228的外设信号,可配置从一个GPIO引脚输入后,直接由另一个GPIO引脚输出。176个输出信号中的某一个信号通过GPIO交换矩阵到达IO_MUX,然后连接到某个引脚。

输出外设信号Y到某一GPIO引脚X的步骤如下:

(1)在GPIO交换矩阵里配置GPIO引脚X的GPIO_FUNCx_OUT_SEL_CFG寄存器和GPIO_ENABLE_DATA[x]字段。设置GPIO_FUNCx_OUT_SEL_CFG寄存器的GPIO_FUNCx_OUT_SEL字段为外设输出信号Y的索引号(Y)。要将信号强制使能为输出模式,把GPIO引脚X的GPIO_FUNCx_OUT_SEL_CFG寄存器的GPIO_FUNCx_OEN_SEL置位,并且在GPIO_ENABLE_REG寄存器的GPIO_ENABLE_DATA[x]字段置位。或者对GPIO_FUNCx_OEN_SEL清零,此时输出使能信号由内部逻辑功能决定。GPIO_ENABLE_DATA[x]字段在GPIO_ENABLE_REG(GPIOs0~31)或GPIO_ENABLE1_REG (GPIOs 32~39)中,清空此位可以关闭GPIO引脚的输出。

(2)选择以开漏方式输出,可以设置GPIO引脚X的GPIO_PINx寄存器中的GPIO_PINx_PAD_DRIVER位。

(3)配置IO_MUX寄存器选择GPIO的交换矩阵。配置GPIO引脚X的IO_MUX_x_REG。设置功能字段(MCU_SEL)为GPIO X的IO_MUX功能(引脚功能3,数值为2)。设置FUN_DRV字段为特定的输出强度值(0~3),值越大,输出驱动能力越强。在开漏模式下,通过置位/清零FUN_WPU和FUN_WPD使能或关闭上拉/下拉电阻器。

GPIO交换矩阵也可以用于简单GPIO输出,设置GPIO_OUT_DATA寄存器中某一位的值可以写入对应的GPIO引脚。为实现某一引脚的GPIO输出,设置GPIO交换矩阵GPIO_FUNCx_OUT_SEL寄存器为特定的外设索引值256(0x100)。

IO_MUX的直接I/O功能

对于ESP32系统与外设交互的快速信号,例如,以太网、SDIO、SPI、JTAG、UART等,会旁路GPIO交换矩阵以实现更好的高频数字特性,也就是说,高速信号会直接通过IO_MUX输入/输出。

这种模式比使用GPIO交换矩阵的灵活度要低,即:每个GPIO引脚的IO_MUX寄存器只有较少的功能选择,但可以实现更好的高频数字特性。为实现外设I/O旁路GPIO交换矩阵必须配置两个寄存器:

(1)GPIO引脚的IO_MUX必须设置为相应的引脚功能请扫描二维码获取,不同引脚能够实现的功能不同,可以实现多达6个功能。

(2)对于输入信号,必须清零SIG_IN_SEL寄存器,直接将输入信号输出到外设。 复位配置如下:复位一栏是每个引脚复位后的默认配置。

•0-IE=0(输入关闭)。•1-IE=1(输入使能)。•2-IE=1,WPD=1(输入使能,下拉电阻)。•3-IE=1,WPU=1(输入使能,上拉电阻)。•R-引脚通过RTC_MUX具有RTC/模拟功能。•I-引脚只能配置为输入GPIO。

RTC IO_MUX的I/O功能

18个GPIO引脚具有低功耗(低功耗RTC)性能和模拟功能,由ESP32的RTC子系统控制。这些功能不使用IO_MUX和GPIO交换矩阵,而是使用RTC_MUX将I/O指向RTC子系统。当这些引脚被配置为RTC GPIO引脚,作为输出引脚时仍然能够在芯片处于深度睡眠模式下保持输出电平值或者作为输入引脚使用时可以将芯片从深度睡眠中唤醒。

每个引脚的模拟和RTC功能是由RTC_GPIO_PINx寄存器中的RTC_IO_TOUCH_PADx_TO_GPIO 位控制的。此位默认置为1,通过IO_MUX子系统输入输出信号。

如果清零RTC_IO_TOUCH_PADx_TO_GPIO位,则输入/输出信号会经过RTC子系统。这种模式下,RTC_GPIO_PINx寄存器用于数字I/O,引脚模拟功能也可以实现。

GPIO引脚与相应的RTC引脚及模拟功能的映射关系。

请注意,RTC_IO_PINx寄存器使用的是RTC GPIO引脚的序号,不是GPIO引脚的序号。

GPIO类型定义

  ESP32开发环境,定义了自身的常量、变量和函数,这些构成了ESP32编程开发的基础,下面简单介绍一下ESP32的GPIO编程基础知识。在esp_err.h、gpio_types.h和gpio.h头文件中,定义了基于C语言的一些预定义。

1.esp_err_t类型定义

定义了esp_err_t类型,也就是int32类型在ESP32开发环境中的名称,很多函数和方法的返回值都是这个类型,定义如下:

typedef int32_t esp_err_t;
主要定义的错误常量类型如下:
#define ESP_OK                        0       /*成功*/
#define ESP_FAIL                      -1       /*失败*/
#define ESP_ERR_NO_MEM            0x101     /*内存溢出*/
#define ESP_ERR_INVALID_ARG       0x102     /*无效参数*/
#define ESP_ERR_INVALID_STATE     0x103     /*无效状态*/
#define ESP_ERR_INVALID_SIZE       0x104     /*无效大小*/
#define ESP_ERR_NOT_FOUND         0x105     /*未发现请求资源*/
#define ESP_ERR_NOT_SUPPORTED    0x106     /*不支持操作或功能*/
#define ESP_ERR_TIMEOUT            0x107     /*操作超时*/
#define ESP_ERR_INVALID_RESPONSE  0x108     /*收到的回应无效 */
#define ESP_ERR_INVALID_CRC        0x109     /*!< CRC或校验和无效*/
#define ESP_ERR_INVALID_VERSION   0x10A     /*无效的版本*/
#define ESP_ERR_INVALID_MAC       0x10B     /*无效的MAC地址*/
#define ESP_ERR_WIFI_BASE          0x3000     /*WiFi错误代码的起始编号*/
#define ESP_ERR_MESH_BASE         0x4000     /*MESH错误代码的起始编号*/
#define ESP_ERR_FLASH_BASE        0x6000     /*闪存错误代码的起始编号*/

2.gpio_num_t类型

gpio_num_t是ESP32引脚的定义,是枚举类型。

3.gpio_int_type_t中断类型

gpio_int_type_t是ESP32中断类型的定义,是枚举类型。

4.gpio_mode_t类型

gpio_mode_t类型定义了ESP32的GPIO模式,是枚举类型。

5.gpio_pullup_t类型

gpio_pullup_t类型定义了ESP32的GPIO的上拉类型,是枚举类型。

6.gpio_pulldown_t类型

gpio_pulldown_t类型定义了ESP32的GPIO的下拉类型,是枚举类型。

7.gpio_config_t结构体定义

gpio_config_t函数简要配置GPIO引脚的参数定义

8.gpio_pull_mode_t类型

gpio_pull_mode_t定义输入/输出接口Pad的拉取模式类型,是枚举类型

9.gpio_drive_cap_t

gpio_drive_cap_t为GPIO的接口驱动能力的定义,是枚举类型

 GPIO示例程序

本部分包括基于ESP IDF的VS Code、Arduino和MicroPython环境的三种代码实现。采用经典的LED每隔1s闪烁实验,实验硬件连接方式,在ESP32开发板的GPIO18上连接LED正极,再连接1KΩ电阻,开发板的GND引脚连接LED负极,如图4-4所示。

电阻的选择以不超过LED的驱动电压为准,一般情况下:白色LED:3.0~3.3V,红色LED:1.8~2.2V,蓝色LED:3.0~3.2V,绿色LED:2.9~3.1V,黄色LED:1.8~2.0V。

相关文章:

新星杯-ESP32智能硬件开发--ESP32的I/O组成

本博文内容导读&#x1f4d5;&#x1f389;&#x1f525; ESP32系统的基础外设开发&#xff1a;IO_MUX和GPIO矩阵 IO_MUX和GPIO矩阵 ESP32的I/O组成了与外部世界交互的基础&#xff0c;ESP32芯片有34个物理GPIO引脚。每个引脚都可用作一个通用I/O&#xff0c;或者连接一个内部…...

航空航天混合动力(7)航空航天分布式电推进系统

航空航天分布式电推进系统 1.概述2.分布式电推进系统组成3.关键技术4.分布式电推进系统优势5.国内外研究情况5.1 国外5.2 国内6.分布式电推进系统应用场景6.1 航空领域6.2 航天领域tips:资料来自网上,仅供参考学习使用 1.概述 分布式推进系统是指飞行器推力由位于整个航空器…...

AIGC视频生成明星——Emu Video模型

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍Meta的视频生成模型Emu Video&#xff0c;作为Meta发布的第二款视频生成模型&#xff0c;在视频生成领域发挥关键作用。 &#x1f33a;优质专栏回顾&am…...

Cyber Security 101-Security Solutions-Firewall Fundamentals(防火墙基础)

了解防火墙并亲身体验 Windows 和 Linux 内置防火墙。 任务1&#xff1a;防火墙的用途是什么 我们看到商场、银行、 餐馆和房屋。这些警卫被安置在 这些区域用于检查进出人员。这 维护此检查的目的是确保没有人在没有 被允许。这个警卫充当了他所在区域和访客之间的一堵墙。 …...

备赛蓝桥杯之第十五届职业院校组省赛第一题:智能停车系统

提示&#xff1a;本篇文章仅仅是作者自己目前在备赛蓝桥杯中&#xff0c;自己学习与刷题的学习笔记&#xff0c;写的不好&#xff0c;欢迎大家批评与建议 由于个别题目代码量与题目量偏大&#xff0c;请大家自己去蓝桥杯官网【连接高校和企业 - 蓝桥云课】去寻找原题&#xff0…...

Docker核心命令与Yocto项目的高效应用

随着软件开发逐渐向分布式和容器化方向演进&#xff0c;Docker 已成为主流的容器化技术之一。它通过标准化的环境配置、资源隔离和高效的部署流程&#xff0c;大幅提高了开发和构建效率。Yocto 项目作为嵌入式 Linux 系统构建工具&#xff0c;与 Docker 的结合进一步增强了开发…...

idea plugin插件开发——入门级教程(IntelliJ IDEA Plugin)

手打不易&#xff0c;如果转摘&#xff0c;请注明出处&#xff01; 注明原文&#xff1a;idea plugin插件开发——入门级教程&#xff08;IntelliJ IDEA Plugin&#xff09;-CSDN博客 目录 前言 官方 官方文档 代码示例 开发前必读 Intellij、Gradle、JDK 版本关系 plu…...

61,【1】BUUCTF WEB BUU XSS COURSE 11

进入靶场 左边是吐槽&#xff0c;右边是登录&#xff0c;先登录试试 admin 123456 admiin# 123456 admin"# 123456 不玩了&#xff0c;先去回顾下xss 回顾完就很尴尬了&#xff0c;我居然用SQL的知识去做xss的题 重来 吐槽这里有一个输入框&#xff0c;容易出现存储型…...

开发环境搭建-1:配置 WSL (类 centos 的 oracle linux 官方镜像)

一些 Linux 基本概念 个人理解&#xff0c;并且为了便于理解&#xff0c;可能会存在一些问题&#xff0c;如果有根本上的错误希望大家及时指出 发行版 WSL 的系统是基于特定发行版的特定版本的 Linux 发行版 有固定组织维护的、开箱就能用的 Linux 发行版由固定的团队、社…...

Spring Boot MyBatis Plus 版本兼容问题(记录)

Spring Boot & MyBatis Plus 版本兼容问题&#xff08;Invalid value type for attribute factoryBeanObjectType: java.lang.String&#xff09; 问题描述问题排查1. 检查 MapperScan 的路径2. 项目中没有配置 FactoryBean3. 检查 Spring 和 MyBatis Plus 版本兼容性 解决…...

26. 【.NET 8 实战--孢子记账--从单体到微服务】--需求更新--用户注销、修改用户名、安全设置

在实际开发过程中&#xff0c;项目需求的变更和增加是常见的情况&#xff0c;因此这篇文章我们就模拟一下项目需求新增的情况。 一、需求 项目经理今天提出了新的功能&#xff0c;需要增加重置密码、安全设置、修改用户名、注销账户这四个功能&#xff0c;这四个功能必须是独…...

神经网络|(一)加权平均法,感知机和神经元

【1】引言 从这篇文章开始&#xff0c;将记述对神经网络知识的探索。相关文章都是学习过程中的感悟和理解&#xff0c;如有雷同或者南辕北辙的表述&#xff0c;请大家多多包涵。 【2】加权平均法 在数学课本和数理统计课本中&#xff0c;我们总会遇到求一组数据平均值的做法…...

OpenHarmony OTA升级参考资料记录

OpenHarmony 作为一个开源分布式操作系统,通过其强大的 OTA(Over-The-Air)升级能力,为开发者和厂商提供了一套灵活而安全的系统升级方案。 OTA升级方式 根据升级包的应用方式,OpenHarmony 的 OTA 升级可以分为两种:本地升级和网络OTA升级。 本地升级 本地升级是将已制作…...

在 Kubernetes 上快速安装 KubeSphere v4.1.2

目录标题 安装文档配置repo安装使用插件 安装文档 在 Kubernetes 上快速安装 KubeSphere 配置repo export https_proxy10.10.x.x:7890 helm repo add stable https://charts.helm.sh/stable helm repo update安装 helm upgrade --install -n kubesphere-system --create-name…...

【回忆迷宫——处理方法+DFS】

题目 代码 #include <bits/stdc.h> using namespace std; const int N 250; int g[N][N]; bool vis[N][N]; int dx[4] {0, 0, -1, 1}; int dy[4] {-1, 1, 0, 0}; int nx 999, ny 999, mx, my; int x 101, y 101; //0墙 (1空地 2远方) bool jud(int x, int y) {if…...

华为OD机试真题---战场索敌

华为OD机试真题“战场索敌”是一道考察算法和数据结构应用能力的题目。以下是对该题目的详细解析&#xff1a; 一、题目描述 有一个大小是NM的战场地图&#xff0c;被墙壁’#‘分隔成大小不同的区域。上下左右四个方向相邻的空地’.‘属于同一个区域&#xff0c;只有空地上可…...

计算机网络 (53)互联网使用的安全协议

一、SSL/TLS协议 概述&#xff1a; SSL&#xff08;Secure Sockets Layer&#xff09;安全套接层和TLS&#xff08;Transport Layer Security&#xff09;传输层安全协议是工作在OSI模型应用层的安全协议。SSL由Netscape于1994年开发&#xff0c;广泛应用于基于万维网的各种网络…...

c++算法贪心系列

本篇文章&#xff0c;同大家一起学习贪心算法&#xff01;&#xff01;&#xff01; 第一题 题目链接 2208. 将数组和减半的最少操作次数 - 力扣&#xff08;LeetCode&#xff09; 题目解析 本题重点&#xff1a;最终的数组和要小于原数组和的一半&#xff0c;且求这一操作的…...

【Maui】注销用户,采用“手势”点击label弹窗选择

文章目录 前言一、问题描述二、解决方案三、软件开发&#xff08;源码&#xff09;3.1 方法一&#xff1a;前端绑定3.2 方法二&#xff1a;后端绑定3.3 注销用户的方法 四、项目展示 前言 .NET 多平台应用 UI (.NET MAUI) 是一个跨平台框架&#xff0c;用于使用 C# 和 XAML 创…...

智慧脚下生根,智能井盖监测终端引领城市安全新革命

在繁忙的都市生活中&#xff0c;我们往往只关注地面的繁华与喧嚣&#xff0c;却忽略了隐藏在地面之下的基础设施——井盖。这些看似不起眼的井盖&#xff0c;实则承担着排水、通讯、电力等重要功能&#xff0c;是城市安全运转的重要一环。然而&#xff0c;传统的井盖管理面临着…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...