news 2026/8/30 12:30:28

Cursor Review 深度实测:AI 代码审查能否阻止劣质化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Cursor Review 深度实测:AI 代码审查能否阻止劣质化

Cursor 的 AI 编程能力这几年确实被讨论得很多,但大家把注意力都放在“AI 能写多少代码”上,却很少认真回答另一个问题:AI 写出来的代码,质量到底能不能看?

这次我们来看一个更硬核的话题:Cursor 的 Review 功能能不能止住代码劣质化?

代码劣质化不是开发者的素质问题,而是 AI 编程场景下必然出现的一种趋势。Cursor 的代码补全和多文件编辑速度快,人会不自觉地接受 AI 的输出,上下文一旦拉长,架构就慢慢走形,重复代码开始堆积,边界条件越写越毛糙。等到代码评审的时候,人工 Reviewer 面对几百行 AI 生成的代码,没有精力逐行判断,劣质代码就这样被合进了主干。

Cursor 显然是注意到了这个问题的。在较新版本里,编辑器内已经集成了 Review 能力,可以对当前分支的改动做批量审查,也可以对选中的代码片段单独审查。这套功能能不能真正拦住劣质代码,还是说只是又一个看起来很强、实际用不上的演示功能?这篇文章会从功能规格、实际使用流程、能力边界和团队落地四个角度展开分析,顺便给出一套你可以直接照着做的验证方法。

1. Cursor Review 核心能力速览

先把最关键的信息放在前面,方便你快速判断这个功能值不值得花时间尝试。

能力项说明
功能名称Cursor 编辑器内置 Review(代码审查)
触发方式编辑器命令、右键菜单、代码片段选中后审查
审查对象当前分支改动、暂存区改动、选中的代码片段
主要能力发现逻辑错误、异常分支缺失、安全隐患、重复代码、命名问题、注释缺失等
依赖条件需要登录 Cursor 账号,消耗模型请求额度
是否支持批量支持,可对分支内多个文件改动做整体审查
是否支持 API 化Cursor 本身支持 API 概念,但内置 Review 更多是编辑器内闭环,不建议自行拼装
适用场景个人开发者提交前自检、小型团队代码评审辅助、AI 生成代码的质量复核
局限无法执行代码、无法验证运行期行为、不具备真实业务领域知识

需要说明的是,Review 功能的具体入口和界面在不同版本上会有细微差异,但整体逻辑是一致的:你把代码交给 Cursor,Coder 模型基于代码上下文做静态审查,给出问题列表和修改建议。它不是编译器的静态分析,也不是传统意义上的人工评审,而是介于两者之间的“AI 预审”。

一句话总结:Review 不是一个会自动把代码变好的魔法按钮,它更像是一个放大镜,能让你在代码合入前看到更多问题。真正修不修、怎么修,还是看人。

2. 先说结论:代码劣质化到底是怎么发生的

要判断 Review 能不能止住代码劣质化,首先得搞清楚劣质化从哪来。否则就只是在给一个没有明确病因的问题开药方。

2.1 劣质化的第一来源:上下文遗忘

Cursor 核心的工作方式是基于当前代码库上下文做生成。只要对话够长、改动文件够多,模型对前面代码的“记忆”就会衰减。表现出来就是:

  • 同一个常量在两个文件里定义了两遍,值还不一样。
  • 在 A 文件里定义的函数,B 文件里又实现了一个功能几乎一样的版本。
  • 早期约定的错误处理模式,到后面几个文件就变成了新的风格。

这不是 Cursor 独有的问题,而是所有长上下文模型的共性问题。Cursor 的响应越流畅,越容易让人快速接受,反而跳过了本应发生的审慎检查。

2.2 劣质化的第二来源:一次性通过的假象

很多开发者用 Cursor 的习惯是:写一段提示词,获得代码,然后直接复制进编辑器,运行一下没问题就算完成。

问题在于,“能运行”和“代码质量好”中间的差距非常大。AI 生成的代码往往能完成主干路径,但异常分支、空值判断、并发冲突、资源释放这些“犄角旮旯”经常是缺失的。这些部分在正常路径上测不出来,一旦用户以非预期方式操作,问题就暴露了。

2.3 劣质化的第三来源:人审疲劳

传统代码评审场景下,Reviewer 通常需要同时消化大量 diff。AI 编程让单次提交的代码量成倍增加,人工评审的压力不但没有减轻,反而更重了。

当一个 Review 请求里有 20 个文件、1500 行改动时,再负责任的 Reviewer 也很难做到逐行推敲。劣质代码就会在这种“审查疲惫”中悄悄进入主干。

2.4 Review 功能刚好切在了这三条线上

Cursor 的 Review 功能之所以值得认真讨论,正是因为它的设计思路分别对应了上述三个问题:

  • 针对上下文遗忘,它可以基于当前分支的完整 diff 做统一审查,相当于让第二个 AI 实例独立检查第一个 AI 实例的产出。
  • 针对一次性通过的假象,它通过静态扫描帮开发者找出隐藏的异常分支和边界问题。
  • 针对人审疲劳,它把人工 Reviewer 的精力集中在 AI 已经筛选过的高风险问题上。

从这个角度看,Review 是对 AI 编程工作流里缺失的“质量半场”的一环。但它能不能真的止住劣质化,还是要看具体的使用方式。

3. Cursor Review 能覆盖哪些审查维度

要评估一个代码审查工具,第一步是明确它的审查维度。Cursor Review 的检查范围基本覆盖了日常开发中最常见的问题类型,下面按优先级排列。

3.1 逻辑错误与边界条件

这是最重要的一类。Cursor 审查代码时,会重点分析代码路径中的逻辑分支,发现明显的漏判和误判。例如:

  • 循环边界是否多一位或者少一位。
  • 空数组、空对象、空字符串是否做了处理。
  • switch/case 是否遗漏了可能的枚举值。
  • 多条件组合判断是否存在短路逻辑错误。

这类问题恰好是 AI 生成代码最容易出错的地方,因为模型在面对常见输入时能输出正确路径,但对意外输入的防御能力偏弱。

3.2 安全隐患

第二类是安全问题。Cursor Review 能发现一些典型的代码安全风险:

  • SQL 拼接而非参数化查询。
  • 用户输入未校验直接进入文件系统操作。
  • 硬编码的密钥、Token、密码出现在代码里。
  • 不安全的反序列化行为。

这一类审查对后端代码和涉及用户输入的业务代码尤其有价值。

3.3 重复代码与过度抽象

第三类是代码结构层面的问题。

Cursor 会标识出同一个文件中或者同一批改动中明显重复的逻辑块。也会反过来提示过度设计,例如一个简单的配置读取写了五层抽象。这两种倾向在 AI 编程过程中非常常见。

AI 模型在生成代码时有一种倾向:如果上下文里已经存在某种模式,它就会不断复用这个模式,哪怕这个模式根本不适用于新场景。这导致代码库在长期使用 AI 辅助后出现“模式膨胀”——到处都是看起来相似、细节却千奇百怪的实现。

3.4 命名、注释、风格一致性

第四类相对轻量,但对代码可维护性影响很大。

  • 命名是否清晰:例如data2tempres这类无意义变量名。
  • 注释是否与实现一致,是否存在误导性注释。
  • 是否有大量被注释掉的无用代码。
  • 风格是否与代码库现有惯例一致。

这类问题不会导致程序崩溃,但会影响团队协作效率。

3.5 变更影响范围分析

第三点相对进阶,Cursor 的分支级审查会分析本次改动的文件之间的关系。例如:

  • 一个接口签名变了,是否所有调用方都同步改了。
  • 新增的依赖是否确实被使用。
  • 一个公共函数的行为变化是否会影响多个调用者。

这一能力是单文件级审查工具很难做到的,而 Cursor 因为能读取多个文件作为上下文,反而在这方面有一定优势。

4. Cursor Review 实际操作流程

这一部分给出可以照做的操作流程。需要说明的是,Cursor 的界面更新比较频繁,具体入口名称可能会有调整,但整体流程稳定。

4.1 操作前准备

在使用 Review 功能前,确认以下几项:

  • Cursor 版本为较新版本,建议保持自动更新。
  • 已登录账号,并确保模型请求额度充足。
  • 代码库已经通过 Git 初始化,且当前处于一个功能分支上。
  • 当前工作区有明确的未提交改动或者已经提交待审查的 commits。

4.2 分支级 Review

这是最常用的方式,适用于功能开发完成后、提交合并前的整批审查。

操作路径大致为:

  1. 在 Cursor 的聊天面板中,输入Review相关指令,或者触发编辑器的 Review 入口。
  2. 等待 Cursor 分析当前分支与主分支之间的差异。
  3. 查看输出的问题列表,类型覆盖逻辑错误、安全问题、重复代码等。
  4. 对每个问题点,可以展开查看代码上下文,并要求 Cursor 给出修改建议。
  5. 按严重程度分类处理。

如果界面中没有直接入口,也可以把当前分支的diff内容提供给对话模型,让它做一次代码审查。示例命令如下。

请审查当前分支相对于 main 分支的全部改动,重点检查以下方面: 1. 逻辑错误和边界条件 2. 安全风险 3. 重复代码 4. 命名与注释问题 5. 变更影响范围 对于每个问题,请给出文件路径、具体行号、问题说明和修改建议。

这种方式的优势是可以自由约定审查重点,适合对 Review 输出格式有明确偏好的团队。

4.3 选中代码片段 Review

分支级 Review 适合全量检查,但如果只想让 Cursor 检查一段具体代码,效率更高的方式是直接选中文本并触发 Review。

操作步骤:

  1. 在编辑器中选中需要审查的代码块。
  2. 调用右键菜单中的 Review 相关选项,或直接粘贴到对话中要求审查。
  3. Cursor 会基于选中的代码和当前文件上下文给出问题列表。
  4. 处理完问题后,可以针对同一段代码再次审查,验证修改效果。

这种方式对单点问题排查特别实用,尤其是在代码审查中发现了疑点,又不想把整个文件丢给模型的时候。

4.4 多轮追问式审查

第一次审查往往只能发现表层问题。更有效的用法是让 Cursor 就某个问题持续深入分析,直到问题被确认或排除。

例如,Cursor 提示“这个函数可能返回空值”,你可以追问:

  • “调用方是否已经做了空值判断?如果没有,请列出所有受影响的位置。”
  • “修改这个函数让它在异常时抛出特定异常,会影响哪些测试?”
  • “这个分支在并发调用下是否有竞态条件?”

这种多轮追问实际上是把 Review 从“查错工具”升级成了“代码分析助手”,价值会高出不少。

5. 用一组测试用例验证 Review 是否有效

判断一个代码审查功能是否可靠,不能只看演示,需要有标准化的测试输入。下面给出一组可以直接复制使用的代码样本,分别覆盖逻辑、安全、命名和重复代码四类问题。

5.1 测试样例:逻辑边界错误

下面这段代码是一个典型的边界问题示例,upperLimit传 0 时会导致非预期行为。

def filter_numbers(numbers: list[int], upper_limit: int) -> list[int]: result = [] for number in numbers: if number <= upper_limit: result.append(number) return result

把这段代码丢给 Cursor Review,观察它是否能指出“当upper_limit为 0 时逻辑是否合理”“是否存在边界条件遗漏”等问题。

5.2 测试样例:安全风险

下面这段代码存在 SQL 注入风险。

def get_user_by_name(db, username: str): query = f"SELECT * FROM users WHERE username = '{username}'" return db.execute(query).fetchall()

如果 Review 功能能直接指出“字符串拼接 SQL 存在注入风险,建议使用参数化查询”,说明它的基础安全审查能力是有效的。

5.3 测试样例:重复代码

下面这个场景中有两段高度相似的逻辑。

def parse_json_response(response: str) -> dict: data = json.loads(response) if "data" in data: return data["data"] return data def parse_xml_response(response: str) -> dict: data = xmltodict.parse(response) if "result" in data: return data["result"] return data

观察 Review 是否能识别出抽象提取的可能。

5.4 测试样例:命名与注释问题

def a(b, c): # 获取用户信息 d = b.get("id") e = c[d] return e

这段代码的问题非常典型:命名毫无信息量、注释覆盖范围模糊。Review 如果只报告“没发现明显问题”,说明它对可维护性维度的扫描还有欠缺;如果能指出命名、变量、注释问题,说明审查能力相对全面。

5.5 如何判断测试结果

给出一个简单评分标准:

审查结果判断
四个测试样例都能指出关键问题Review 能力较为可靠,可进入团队流程
能指出逻辑错误和安全风险,但忽略命名和重复代码审查能力偏“正确性”,可维护性维度不足
只能指出最明显的逻辑问题实用性有限,仍需人工 Review 兜底
连逻辑错误和安全风险都未指出不建议依赖该功能,可考虑其他代码审查工具

建议拿到 Cursor 后先跑一遍这组测试,再决定把 Review 置于整个工作流的哪个位置。

6. Review 的边界:哪些代码问题它管不了

Review 不是万能的。要客观评估这个功能,必须说清楚它管不了什么。

6.1 运行期问题

Review 本质上是基于代码文本的静态分析。它不会执行代码,所以以下几种问题是它发现不了的:

  • 并发条件下的竞态条件,尤其是时序依赖复杂的情况下。
  • 内存泄漏和资源未释放。
  • 外部系统超时、重试、幂等性设计问题。
  • 数据量增大后的性能瓶颈。

这些只能通过测试、压测和线上监控来发现。

6.2 业务语义问题

Cursor 能看懂代码的语法和结构,但不了解你业务的真实预期。

例如,一个函数把订单状态从“待支付”改成“已完成”,这段代码在语法上没有任何问题,业务逻辑上可能就是错的。Review 无法从代码本身判断业务行为是否正确,它只能帮你做“与代码库现有逻辑一致性”的检查。

6.3 架构演进问题

代码劣质化最严重的形式不是某个函数写得烂,而是整个模块的架构在慢慢腐烂。这类问题通常跨越多个版本、多个分支,Review 一次只能看到一个时间切片,很难发现问题背后的架构趋势。

6.4 团队的隐性约定

每个团队都会有一些“约定俗成”的规范,它们不在代码规范文档里,但在代码审查中会被反复提及。Review 无法感知这些隐性知识,这部分工作只能靠人工 Review 完成。

7. 团队工作流:把 Cursor Review 接入质量门禁

个人开发者使用 Review 的方式很直接,写完代码跑一遍,改掉问题,结束。但团队级的使用要考虑流程问题,否则 Review 就只是又多了一个“看起来做了,实际上没人看”的环节。

7.1 质量门禁设计

建议将 Cursor Review 插入到开发者自测与人工评审之间,作为“第一道机器审查”。具体流程可以这样设计:

开发完成 -> 本地单测通过 -> 运行 Cursor Review 分支级审查 -> 修复 AI 发现的问题 -> 提交 Pull Request -> 人工 Reviewer 重点审查 AI 标记的高风险项 -> 合并到主干

这个流程的核心思路是:人工 Reviewer 只看 AI 已经筛过一遍的高风险项。而不是让 AI 替代人,也不是让人从零开始再看全部 diff。

7.2 审查输出格式模板

为了便于团队统一理解和归档,建议要求 Review 的输出按固定格式整理。下面是一个参考模板。

## 代码审查报告 ### 高危问题 - [文件: 行号] 问题描述 ### 中危问题 - [文件: 行号] 问题描述 ### 低危问题 - [文件: 行号] 问题描述 ### 修复建议 - 修改方案一 - 修改方案二

7.3 批量审查多个改动

Cursor Review 对分支级改动是整体处理的,并不需要开发者逐文件提交审查任务。它会把当前分支所有改动作为整体上下文进行分析,这比单文件审查更接近实际代码审查的视角。

如果团队有较大的重构需求,建议按模块分批提交、分批审查。模块边界清晰,Review 才能给出更精准的分析。不要试图让一次 Review 处理跨三个模块的巨型改动,那会超出模型的上下文上限,导致审查质量下降。

7.4 与其他代码审查工具的分工

Cursor Review 不是唯一可用的代码审查工具。建议明确分工:

  • Cursor Review:开发阶段快速自检,侧重逻辑、安全、可维护性。
  • CI 静态检查工具:规范强约束,例如格式检查、常见反模式检测。
  • 人工 Code Review:架构合理性、业务语义、团队隐性约定。
  • 自动化测试:运行期正确性。

这样一台组合下来,每个工具只解决自己最擅长的问题,效率和质量都能兼顾。

8. 常见问题与排查方法

实际使用 Review 功能时,可能会遇到下面这些情况。

问题现象可能原因排查方式解决方案
Review 没有给出任何问题代码确实相对干净,或者代码量过少不足以形成有效上下文换用有明确 bug 的代码片段测试如果测试样例也无法发现问题,说明功能异常或模型版本较旧
Review 给出的建议与代码库实际情况不符上下文不完整,模型可能没有读取全部相关文件在追问中补充相关文件路径或代码提供更完整的上下文后再审查
分支 Review 耗时过长改动量过大,模型需要处理的文件多检查本次改动文件数量和 diff 行数按目录或模块分批审查
模型提示额度不足账号免费额度用完或订阅额度限制检查 Cursor 左下角额度显示等待额度重置或升级订阅
审查报告太泛化,没有具体行号代码上下文不足导致模型只能给通用建议选中具体代码块后再触发审查对重点代码使用片段级 Review
界面找不到 Review 入口Cursor 版本过旧更新 Cursor 到最新版本在设置中检查版本更新
中文界面相关设置不同版本对中文菜单支持不同在设置中查找语言选项如果不满可以装汉化包,但更建议适应原生界面,避免同步延迟

还有一个常见问题是开发者对 Review 输出过度信任。要记住:Review 给出的每条建议都需要人做二次判断。它可能是对的,也可能是误报。决定代码是否修改的永远应该是人,而不是模型。

9. 最佳实践与合规提醒

9.1 团队落地时的工程化建议

  • 先跑通后优化。第一次使用 Review 时不要追求输出格式完美,先让它跑完一次完整的审查流程,确认它能发现问题,再逐步调整提示词和输出模板。
  • 保存一套最小可用的审查提示词模板,方便团队成员统一复制使用。
  • 模型检查的内容要覆盖代码质量、安全和可维护性三个维度,缺一不可。
  • 批量任务和分支级 Review 用完后的记录,可以整理为一个审查数据库,用来发现团队代码中反复出现的典型问题。
  • 高风险的改动,例如涉及支付、用户隐私、权限控制、数据迁移等模块,必须在 AI Review 之后仍然强制人工 Review,并且要做充分的运行期测试。
  • 对测试代码也应纳入 Review 范围。AI 生成代码的一个重要陷阱是:生成的“测试”常常只是为了通过而编写,而不是为了捕捉问题而编写。让 AI 审查测试代码的质量,能减少这种自欺欺人的情况。

9.2 隐私与代码安全边界

Cursor 在运行 Review 时,会把你当前代码库的相关内容发送到服务端处理。因此需要特别留意:

  • 企业级项目在使用前,先确认是否允许代码出库。需要仔细评估公司对代码出库和 AI 工具使用的规定。如果公司有私有化部署或企业版方案,优先使用合规路径。
  • 不要把生产环境的密钥、Token、用户隐私数据放进被审查的代码上下文里。
  • 涉及人脸信息、用户身份信息、未公开的商业逻辑等敏感数据,尽量不要通过在线 AI 工具处理。
  • 如果项目的代码安全要求非常高,建议考虑本地化的代码审查方案,而不是依赖云端的 AI 审查能力。

9.3 关于合规使用 AI 编程工具的提醒

AI 编程工具在提升效率的同时,也带来了新的代码版权和合规问题。团队在推广 AI 编程时,应该同步建立使用规范:

  • 明确哪些代码生成场景可以使用 AI,哪些不能。
  • 明确 AI 生成代码的版权归属和代码审计要求。
  • 定期检查 AI 工具的使用记录,确认没有超权限使用。
  • 对涉及核心业务逻辑的代码,必须有人工审查兜底。

10. 总结:Review 是止住劣质化的必要非充分条件

回到最开始的问题:Cursor 硬核 Review 技能能否止住代码劣质化?

我的判断是:Review 能有效缓解代码劣质化,但不能完全止住它。

它能把在复杂 diff 中容易被忽略的逻辑错误、安全风险、命名问题和重复代码筛出来,把人工 Review 的精力集中在真正需要人判断的地方。对个人开发者来说,它是提交前非常有价值的最后一道自检;对团队来说,它是质量门禁里值得加入的一环。

但优质代码从来不是靠审查工具筑起的防线,而是靠“谁写的、谁审的、怎么合的”这套流程决定的。Review 只是流程中的一张网,它能拦住不少鱼,但船往哪开,终究还是掌舵的人说了算。

最先值得花时间验证的功能:用第 5 节给的四个测试样例跑一次 Review,判断它的基础审查能力是否可靠。

最容易踩的坑:把 Review 的输出当成权威结论直接采纳。记住,它是辅助,不是最终判断。

后续可以继续探索的方向:把 Review 结合到团队的 CI 流程中,形成自动化质量门禁,让每一次提交都经过“AI 预审→人工复审”两个阶段。

如果你现在正在用 Cursor 写代码,建议在下一个功能分支上跑一次分支级 Review。顺手测试一下代码库里最近改动比较大的模块,看看它能挑出多少你之前没注意的问题。这个动作的成本只有几分钟,但很可能让你重新审视自己过去几周的代码质量。

建议收藏备用。后续 Cursor 更新后,Review 功能的能力边界可能还会变化,到时候值得再跑一遍同样的测试样例,对比看看审查能力是变强了还是只是界面变多了。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/30 12:26:58

德州空调维修正规服务怎么选?欧米到家全区域及代码故障检修

前言&#xff1a;修空调&#xff0c;先把故障查明白德州夏季高温闷热、春秋多风沙、冬季温差大&#xff0c;空调一旦出现不制冷、室内机漏水、外机异响、频繁停机等问题&#xff0c;往往会直接影响家庭休息或商铺营业。面对突发故障&#xff0c;用户真正需要的不是一句含糊的“…

作者头像 李华
网站建设 2026/8/30 12:25:57

PyTorch入门:从张量计算到模型部署的完整链路

如果你已经装了 PyTorch&#xff0c;却发现自己盯着终端里蹦出来的 Using CPU 发愣&#xff1b;如果你跟着教程跑通了 MNIST&#xff0c;但换一个真实数据集就不知道代码该怎么改&#xff1b;如果只是想在 Windows 上装个 GPU 版 PyTorch&#xff0c;结果被 CUDA、cuDNN、con…

作者头像 李华
网站建设 2026/8/30 12:17:59

基于RAG与知识图谱的AI医疗问诊平台系统搭建指南

AI智能医疗问诊平台系统&#xff0c;是我见过比较适合 Python AI 方向毕业设计和技术演示的一类项目。它的核心不是写一个聊天机器人界面&#xff0c;而是把 RAG 检索增强生成、LangChain 编排、Neo4j 知识图谱、FastAPI 后端、Vue3 前端完整串起来&#xff1a;患者输入症状或问…

作者头像 李华
网站建设 2026/8/30 12:15:58

无屏AI硬件重构交互入口:从语音交互到端侧部署,开发者如何提前卡位

在 AI 硬件这条赛道上&#xff0c;最容易被忽略的问题不是“设备有没有屏幕”&#xff0c;而是“设备靠什么完成交互闭环”。OpenAI 首款 AI 硬件被描述为一款没有屏幕、外形像甜甜圈的圆环状可穿戴设备&#xff0c;这个选择并不是为了猎奇。相比把屏幕做得更大、更亮&#xff…

作者头像 李华
网站建设 2026/8/30 12:14:57

DeepSeek V4 Flash 接入 Codex CLI 完整配置教程

之前想让 Codex 直接调用 DeepSeek 的模型来写代码&#xff0c;结果网上资料要么太旧&#xff0c;要么只讲了一半&#xff1a;注册完 API Key 之后&#xff0c;根本不知道该怎么让 Codex CLI 真正切到 DeepSeek 上。这篇文章整理了一套从零到能跑的接入流程&#xff0c;核心配置…

作者头像 李华
网站建设 2026/8/30 12:13:56

STM32MP257 SPI3从机NSS引脚claim失败排查与设备树配置

这块STM32MP257F_EV1评估板本身素质不错&#xff0c;双核Cortex-A35加Cortex-M33&#xff0c;跑OpenSTLinux做工业网关绰绰有余。但当我开始验证SPI3的从机模式时&#xff0c;一个不到1厘米宽的NSS引脚差点让我怀疑人生&#xff1a;PB1在设备树里配置为SPI3从机的片选输入&…

作者头像 李华