STM32CubeMX比较器输入选择配置详解:基于F334的实战避坑指南 📅 发布时间:2026/8/31 21:44:42 👁 浏览次数: 做嵌入式的朋友应该都有过这种经历拿到一颗新的 STM32打开 CubeMX 打算快速把外设配好结果在某个不起眼的下拉框里卡了半小时。我最近就在 F334 上被“比较器输入选择”这个看似简单的配置项绊了一跤。网上搜出来的资料多半是讲比较器原理的要么就是教你怎么用 HAL 库函数去改寄存器很少有文章把 CubeMX 界面上那一堆“Input”选项讲清楚。排查了一下午翻参考手册翻到眼睛发酸最后才彻底搞明白标题里这个“Comparateor inputs selection”到底在选什么、怎么选才不会被掉坑里。这篇文章就把这些经验完整记录下来。我这里的标题其实是拼写错误正确拼写是 Comparator。不过这个错拼倒是阴差阳错地暴露了一个普遍痛点很多人打开 CubeMX 后根本不知道 COMP 外设的输入选择是什么意思更不知道怎么配置才能让比较器真正工作起来。这篇内容主要针对 STM32CubeMX无论是传统的 2.x 桌面版还是新的 CubeMX 集成环境中比较器输入选择的相关配置做一次彻底拆解结合我在 F334 上实际踩过的坑覆盖输入源分析、引脚复用关系、外部基准连接以及和 HRTIM 这类高级定时器联动时的注意事项。适合正在用 CubeMX 配置比较器但被输入选择卡住的人也适合想彻底搞清楚 COMP 外设输入路径的开发者。1. 比较器输入选择这个配置项到底在选什么如果你在 CubeMX 的左侧外设列表里点开 COMP1 或者 COMP2看到那些复杂的下拉菜单第一反应往往是懵的。别急先把问题拆开。1.1 比较器的两个输入端口非反相输入与反相输入STM32 内部的比较器Comparator简称 COMP本质上是一个模拟电压比较器两个输入端口分别叫“非反相输入”Non-inverting input用“”表示和“反相输入”Inverting input用“-”表示。输出逻辑很简单当“”端电压高于“-”端电压时输出为高电平反之输出为低电平。翻开 STM32 参考手册的 COMP 章节你会看到输入选择相关的寄存器位比如 COMP_CSR 里的 COMPx_INP 和 COMPx_INM。INP 控制非反相输入INM 控制反相输入。这两个字段的值决定了比较器比较的是哪两个信号。CubeMX 界面上的“Input”配置项最终就是去设置这两个寄存器字段。这里要特别指出一个初学者最容易犯的错误非反相输入和反相输入不是随便选的。很多人在 CubeMX 里把两个输入都选成外部引脚接上信号之后发现输出状态完全不对原因就是搞混了正负端。比如你想检测一个电压是否超过 2.5V正确的做法是把被检测电压接到非反相输入把 2.5V 基准接到反相输入。如果你接反了输出逻辑就直接反过来了。1.2 输入源的可选项外部引脚、DAC、内部基准在 CubeMX 的配置界面上非反相输入和反相输入的可选项大致分为三类。第一类是 GPIO 外部引脚。非反相输入可选的是 COMP_INP 对应的引脚这些引脚通常是 PA0、PA1、PA4、PA5 这类带模拟功能的引脚。反相输入可选的外部引脚则包括 COMP_INM 对应的引脚不同型号排列完全不同。比如在 STM32F3 系列上某些比较器的反相输入可以连接到 PA4但在 F0 系列上同一个比较器的反相输入可能只能连接内部 DAC 输出或者 VREFINT。第二类是内部 DAC 输出。STM32 内部有 DAC 外设它的输出电压可以直接作为比较器的输入源。这种情况下不需要占用外部引脚。如果你需要在运行时动态调整阈值电压用 DAC 作为反相输入是比外部基准更灵活的方案。你可以用定时器触发 DAC 产生一个斜坡电压然后让比较器和这个斜坡电压比较从而实现脉宽调制或者频率转换。第三类是内部基准电压 VREFINT。这是芯片内部一个固定的参考电压典型值在 1.2V 左右具体看数据手册。注意 VREFINT 的精度有限作为粗略阈值是可以的如果要求高精度比较还是建议用外部基准或者 DAC。提示并不是所有比较器都支持上述全部输入源。以 STM32F334 为例COMP1 的非反相输入可以选 PA0、PA4 或 DAC1_OUT反相输入可以选 PA1、PA5 或 VREFINT、DAC1_OUT。但同样的 COMP2可选择的外部引脚就不同了。配置前务必对照数据手册的“Alternate function mapping”表格确认别只信 CubeMX 的下拉框——它虽然是动态生成的但如果你没有正确勾选某些功能部分选项不会显示。1.3 输出极性、滞回和消隐时间这些参数和输入选择的关系输入选择只是第一步。在 CubeMX 的 COMP 配置里你还会看到“Output polarity”“Hysteresis”“Blanking source”等选项。这些参数看起来和输入选择无关实际上密切相关。比如滞回Hysteresis功能它的作用是避免比较器在阈值附近因为噪声反复翻转。滞回电压的大小会影响你判断输入电压的精度特别是在低速变化信号上。CubeMX 里可选“No hysteresis”“Low”“Medium”“High”等挡位看名字就知道是滞回电压的大小不同。如果你配置比较器用来检测过压保护建议选 Medium 或 High不然信号稍微抖动一下比较器输出就会疯狂跳变后面接的中断可能被触发几百次。输出极性Polarity决定比较器输出是高电平有效还是低电平有效。极性配置为“Non-inverting”时比较结果不变“Inverting”时输出取反。这个选项也可以用来解决上面说的“接反了输入端口”的问题但不建议用取反来掩盖接线错误因为会造成代码可读性下降后面维护的人容易疯掉。消隐时间Blanking是配合 PWM 应用的重要功能。当比较器用于过流检测时PWM 开关动作瞬间会产生很大的电流尖峰让比较器误触发。消隐功能可以在 PWM 开关动作后的短时间内屏蔽比较器输出。配置这个功能需要在 CubeMX 中额外选择定时器的某个触发输出作为消隐源后面会具体讲。2. CubeMX 界面上的实际配置路径全解前面把原理说清楚了现在进入实操环节。我以 STM32F334 的 COMP1 为例手把手带你把 CubeMX 里的输入选择配置走一遍。2.1 从 Pinout Configuration 面板开始打开 CubeMX新建一个基于 STM32F334R8 的工程。在左侧的“Categories”列表里找到“Analog”展开后能看到“COMP1”和“COMP2”。点击 COMP1界面中央的芯片图会高亮显示 COMP1 可用的引脚。如果你之前没有做过任何配置这里只会高亮显示一个输入引脚和一个输出引脚这就是默认状态。接下来在 COMP1 的配置界面中点击“Mode”下拉框选择“Enabled”。这时界面会刷新出现“Parameters Settings”窗口这就是配置输入选择的主战场。在 Parameters Settings 里你会依次看到Input configurationNon-inverting inputInverting input-Output configurationOutput polarityBlanking sourceHysteresis configurationHysteresis2.2 逐个击破非反相输入选择该放什么Non-inverting input 下拉框里你能看到若干选项每个选项都对应一个 GPIO 引脚号或者内部信号。以 F334 的 COMP1 为例选项包括 PA0、PA4、DAC1_OUT。假设我要用一个外部电压作为检测对象这个电压连接到 PA4 引脚那我在这里直接选 PA4。CubeMX 会自动将 PA4 配置为模拟输入模式并且把 COMP1_IP 寄存器位设置为对应的编码值。你不用手动去芯片图上把 PA4 点成模拟模式CubeMX 会帮你完成这个操作前提是你在这里做了正确选择。但是有一个细节很多人忽略。当你选择 PA4 作为非反相输入时CubeMX 并不会立刻把 PA4 的 GPIO 配置锁定。如果你在芯片图里手动将 PA4 配置为其他功能比如 TIM2_CH1两个配置就会冲突。CubeMX 会在右下角的“Problems”面板里报错提示引脚冲突。正确的做法是不要手动干预让 CubeMX 自动管理引脚。2.3 反相输入基准电压的选择需要结合实际电路Inverting input 下拉框里的选项会多几个。还以 COMP1 为例可选项包括 PA1、PA5、VREFINT 和 DAC1_OUT。这里有个实用建议如果你的参考电压不是标准值比如你想检测 1.8V 的阈值内部 VREFINT约 1.2V就不够用那就需要把外部基准或分压网络接到 PA5 并在这里选择 PA5。如果阈值是固定的比如 1.2V直接用 VREFINT 就行省一个引脚。还有一个小技巧用 DAC 做反相输入时可以让程序在运行时通过修改 DAC 输出值动态改变比较阈值而不需要改动硬件电路。我做过一个电池电压监测的小模块用 DAC 输出动态阈值配合比较器中断实现多级电量告警非常方便。CubeMX 里只需要把 DAC 使能然后在 COMP 的 Inverting input 里选 DAC1_OUT之后在代码里控制 DAC 输出电压即可。2.4 输出引脚和内部连接的设置输入选择配置好后还有一个输出相关的设置。COMP1 的输出可以连接到普通 GPIO 引脚比如 PA6也可以直接连接到内部外设比如定时器的输入捕获或者 HRTIM 的触发输入。在 CubeMX 的 COMP1 配置界面中你可以在“Output”部分选择“Output Pad”来启用 GPIO 输出或者选择“Internal connection”来连接内部外设。如果你选用了 GPIO 输出注意输出引脚的推挽/开漏配置需要和后续电路匹配。如果后面接的是比较器输出导致输入引脚损坏的 CMOS 输入建议选推挽输出如果接的是开漏总线建议选开漏并配置上拉。内部连接这部分在实际配置中最容易被忽略因为 CubeMX 不会自动帮你把比较器输出连接到定时器的某个通道上。你需要到对应的定时器配置界面里手动选择“Trigger Source”或者“Input Capture Source”为 COMP1_OUT。这个操作和比较器本身的输入选择是独立的但最终影响到整个信号链路。3. 输入选择背后的 GPIO 复用关系最容易踩坑的地方这一节是全文的重点也是我最想让你看完的部分。大部分人配置失败问题都出在 GPIO 复用关系上。3.1 比较器输入引脚与普通 GPIO 的关系STM32 的比较器输入引脚是模拟输入引脚它们和普通 GPIO 共用物理引脚但功能上是完全不同的。当你把某个引脚用作比较器输入时需要把该引脚的 GPIO 配置为模拟模式Analog这时数字输入输出缓冲器默认是关闭的功耗也更低。CubeMX 的智能之处在于你选择了比较器输入之后它会自动帮你把引脚模式改为 Analog。但如果你不是通过 CubeMX 下拉框选择输入源而是手动在芯片图上把引脚点成 Analog然后去代码里把寄存器对应位设了CubeMX 生成的中断优先级、时钟初始化顺序可能会出问题。我在实际项目中遇到过一种情况我先在 IDE 里手写了比较器初始化代码后来又把工程迁移到 CubeMX结果发现某个引脚的 GPIO 配置被覆盖了整个模拟比较功能失效。排查后发现是 CubeMX 生成的 GPIO_InitStruct 里把引脚配置成了输出模式覆盖了我原先的手写配置。所以CubeMX 里配置务必规范别搞混合模式。3.2 不同系列 STM32 比较器输入选择的差异为了让大家避免在跨系列移植时踩坑我整理了一个对比表格列出了常见系列的比较器输入选择差异。STM32 系列比较器数量非反相输入典型可选反相输入典型可选特别注意F02 (COMP1/COMP2)PA0, PA1, PA4, PA5多个外部引脚 VREFINT DACF0 的 COMP 输出接 TIM1 的 BKIN 需要额外配置F3 (如 F334)2 (COMP1/COMP2)PA0, PA4, DAC1_OUTPA1, PA5, VREFINT, DAC1_OUT支持 HRTIM 联动但需要 HRTIM 的输入选择配合G02 (COMP1/COMP2)不同封装引脚差异大多种内部基准和 DAC输入选择受封装影响明显G42 (COMP1/COMP2)多路 GPIO DAC多路 GPIO VREFINT DAC支持可编程滞回功能最强L42 (COMP1/COMP2)多路 GPIO多路 GPIO VREFINT低功耗模式下比较器仍可工作要注意的是这个表格是典型情况不同型号的具体封装和引脚会有差异。配置前务必核对数据手册里的表。3.3 引脚冲突的破解思路如果你在 CubeMX 里同时使用了大量外设引脚冲突是常见问题。比如 F334 的 PA0 既是 COMP1 的非反相输入又是 ADC1 的输入通道还可能是 TIM2_CH1。如果你想把 PA0 用作比较器输入同时又想让 ADC1 采集另一个信号这没问题但如果你把 ADC1 的输入也设置成 PA0那 CubeMX 会报冲突。解决冲突的思路通常是优先给高实时性、不可替代的功能分配引脚。比如比较器输入如果接的是关键保护信号那这组引脚优先专属。考虑用模拟开关或者跳线把外部信号切换到不同引脚减少引脚占用。检查是否可以用内部信号替代外部信号。比如 DAC 输出或 VREFINT省下外部引脚。在 CubeMX 中通过“Pinout Conflict”面板逐项排查找到冲突的根源配置项然后修改其中一个外设的输入选择。4. 实战串联F334 比较器与 HRTIM 输入联动的案例标题和热词里反复出现 STM32F334 和 HRTIM这个组合确实值得单独拿出来讲。F334 的高分辨率定时器HRTIM是它的王牌外设而比较器正好可以给它做各种模拟信号的前端处理。4.1 为什么 F334 上比较器特别有用F334 的定位是数字电源控制。高分辨率定时器可以输出极高分辨率的 PWM 波形而数字电源需要实时监测电流、电压一旦发生过流、过压就要立即关断 PWM。这个监测动作如果用 ADC 采样再做软件判断延迟太大硬件比较器几乎零延迟的输出正好用来触发 HRTIM 的紧急关断BKIN或者事件触发。所以我在 F334 上做电源项目时几乎必配一个比较器。比较器的非反相输入接电流采样电阻两端的电压反相输入接一个基准电压输出接到 HRTIM 的某个故障输入。当电流超限时比较器瞬间翻转HRTIM 直接关断输出保护后级电路。4.2 配置链路COMP - HRTIM 输入选择的完整步骤要在 CubeMX 里实现上面的功能你需要完成一整条配置链路。第一步配置比较器的输入选择。在 COMP 配置界面里选择外部输入引脚作为非反相输入选择 VREFINT 或 DAC 输出作为反相输入。这一步和前面讲的完全一样。第二步把比较器输出连接到 HRTIM 的故障输入。HRTIM 有个 Fault InputFLT可以配置由多种内部信号触发其中一个来源就是 COMP1_OUT。在 CubeMX 的 HRTIM 配置界面中找到 Fault 配置选择 Enable并在 Fault Source 里勾选 Comparator 1 Output。第三步配置 HRTIM 的输入事件。如果你希望通过比较器触发定时器事件而不是直接关断 PWM可以到 HRTIM 的“Event”标签页中配置事件源。F334 的 HRTIM 还支持定时器之间的相互触发比较器输出可以作为触发信号去控制另一个定时器的启动或停止。第四步设置消隐时间。特别是过流保护场景PWM 开关瞬间的噪声很容易让比较器误触发。前面提过 Blanking 功能在 HRTIM 联动场景中就可以把定时器的某个输出事件作为消隐信号。在 CubeMX 中你需要在比较器的 Blanking Source 下拉框中选择对应的 HRTIM 输出事件。这里有个容易搞错的地方不同系列可选的消隐源不同F334 上也许只有 HRTIM 的特定事件可以作为消隐源而 G4 上可能是 TIM1 的某个事件。务必按参考手册确认。4.3 PWM 占空比和频率测量CubeMX 配置的另一种应用热词里有一条“cubemx 测量 占空比 频率”这个需求也可以用比较器来实现。方法是用比较器将一个模拟信号转换成数字方波再用定时器的输入捕获功能测量方波的占空比和频率。CubeMX 配置思路是比较器把输入的正弦波或任意模拟信号和设置的阈值电压比较输出翻转产生方波方波输出连接到某个定时器的输入捕获通道比如 TIM2_CH1TIM2 配置为输入捕获模式同时测量上升沿和下降沿从而计算出占空比和频率。如果信号本身已经是数字方波其实不需要比较器直接用定时器输入捕获即可。但如果你要测量的是模拟信号比如传感器输出的电压信号或者 PWM 经过 RC 滤波之后的模拟电压那比较器是必备的前端环节。4.4 常见配置错误排查清单基于我自己的踩坑经历这里整理了一份比较器输入选择相关问题的排查清单供你对照参考。信号完全没反应输出始终是固定电平检查比较器是否使能检查输入引脚是否真的连接了信号确认非反相输入和反相输入是否接反。如果有万用表直接测两个输入引脚的电压验证逻辑是否符合预期。输出有翻转但频率和预期不一致检查消隐时间是否太长把有效信号给屏蔽了检查滞回是否设置得过大导致阈值点偏移。和 HRTIM 联动失效PWM 没有被关断确认比较器输出是否成功连接到 HRTIM 的 Fault 或触发输入。在 CubeMX 里检查 HRTIM Fault Source 配置查代码里确认 EXTI 中断没有被错误地占用。程序跑着跑着比较器配置丢失检查时钟配置是否正确特别是 COMP 外设的时钟是否被使能。个别系列里 COMP 的时钟比较特殊需要在 RCC 配置中手动开启。CubeMX 编译不通过报错提示某个引脚冲突到 Pinout 面板看冲突详情逐个调整。比较器输入引脚的优先级通常低于高速通信接口但高于普通 GPIO根据实际需要取舍。注意以上排查都以 CubeMX 界面操作为主但调试时还应该配合调试器查看实际寄存器值。CubeMX 生成代码后在 Keil 或 STM32CubeIDE 里逐步执行观察 COMP_CSR 寄存器是否和配置一致输入引脚电平是否正确。这是最快定位问题的方法。5. 验证输入选择是否生效的调试技巧配置完成了代码也生成了怎么确认选择真正生效这里分享几个我常用且有效的验证方法。5.1 使用内部基准作为输入源的验证技巧如果你在 Inverting input 里选择了 VREFINT验证就很方便。只需要用万用表测量你接到非反相输入的外部电压然后在调试器里观察比较器输出寄存器的值。外部电压高于 1.2V 时输出应该为高低于 1.2V 时输出应该为低。由于 VREFINT 实际值可能有一点偏差阈值判断不会在正好 1.2V 处翻转你可以微调输入电压找到一个翻转点记录下实际翻转电压。这个实际翻转点可能和理论值不一致原因通常是 VREFINT 精度有限或者存在较小的输入失调电压。如果项目对精度要求高建议放弃 VREFINT改用外部基准。如果是验证性测试VREFINT 就很够用了。5.2 用虚拟示波器和调试器观察输出变化如果条件允许接上逻辑分析仪或示波器到比较器的输出引脚持续观察输出波形。输入电压缓慢变化时输出应该在阈值处干净翻转。如果观察到震荡或者来回翻转说明滞回设置太小或者电路布局引入了很大噪声。没有外部示波器时你可以开启比较器的中断在中断回调函数里翻转另一个 GPIO 指示电平把中断频率换算成输出翻转次数。不过这种验证方法不够精确最好还是用硬件工具。5.3 一个完整的寄存器级验证示例用 STM32CubeIDE 打开调试会话在表达式窗口里添加 COMP1-CSR 寄存器配置完成后复位并运行观察寄存器值。比如 F334 上 COMP1_CSR 的 COMP1_INP 字段从 bit16 到 bit17COMP1_INM 字段从 bit14 到 bit15。如果非反相输入选的是 PA4那么 INP 字段的值应该对应 PA4 的编码值。如果你对 CubeMX 的可视化配置没信心可以直接去读这个寄存器确认。代码层面可以添加这样的验证逻辑#include stm32f3xx_hal.h // 假设你已经通过 MX_COMP1_Init() 完成了初始化 void Verify_CMP1_Input_Selection(void) { uint32_t csr_val COMP1-CSR; // 提取反相输入和非反相输入的编码值 uint32_t inverting_input (csr_val 14) 0x3; // COMP1_INM uint32_t non_inverting_input (csr_val 16) 0x3; // COMP1_INP // 根据参考手册中的编码表判断是否匹配 if (inverting_input 0x0) printf(CMP1 Inverting Input 来源: 外部引脚 PA1\r\n); else if (inverting_input 0x1) printf(CMP1 Inverting Input 来源: 外部引脚 PA5\r\n); else if (inverting_input 0x6) printf(CMP1 Inverting Input 来源: VREFINT\r\n); else printf(CMP1 Inverting Input 来源: 其他编码详查手册\r\n); if (non_inverting_input 0x0) printf(CMP1 Non-inverting Input 来源: 外部引脚 PA0\r\n); else if (non_inverting_input 0x1) printf(CMP1 Non-inverting Input 来源: 外部引脚 PA4\r\n); else printf(CMP1 Non-inverting Input 来源: 其他编码详查手册\r\n); }这个代码只是辅助验证实际调试中不一定要放到固件里。你可以在调试器的表达式窗口直接观察这些位的值效果一样。6. 输入选择相关的进阶玩法从固定比较到动态阈值讲完了基础配置和验证最后分享几个比较器输入选择的进阶应用。这些玩法用到的关键能力都是“输入源可以动态切换或动态调整”在电源管理和信号处理场景里非常实用。6.1 用 DAC 动态修改阈值便携设备电量监测实战我做过一个两节锂电池串联的便携设备总共 4 级电量告警。如果每个告警阈值用外部电阻分压实现需要 4 组电阻网络外加模拟开关电路非常繁琐。后来改用比较器DAC 的方案比较器的反相输入接 DAC 输出非反相输入接电池电压的分压信号。程序根据当前电量和告警等级动态给 DAC 写不同的输出电压实现阈值的灵活切换。CubeMX 里的配置顺序是先使能 DAC 外设并选择一个输出通道。在 COMP 配置里将反相输入选为 DAC1_OUT。在代码中控制 DAC 输出值根据电池电量切换阈值。比较器输出接一个 GPIO 中断触发后进入低电量处理。这个方案的优点是硬件极简阈值随时可以改。缺点是 DAC 的精度有限高位数 DAC 分辨率有限需要评估当前应用场景的精度是否够用。6.2 多输入源比较器实现信号源切换某些应用需要在不同信号源之间切换比如采集模块要根据现场情况选择检测电流信号或温度信号。比较器输入如果只有一组非反相输入无法做到多路切换。但如果你有多个 ADC 通道配合比较器的输出选择可以实现简单的信号源自动切换。这里有一个思路使用两个比较器分别处理两种信号输出分别连接到两个不同中断或定时器输入代码根据当前需求去使能对应的比较器。CubeMX 中每个 COMP 的输入选择都可以独立配置。比如 COMP1 非反相输入接电流传感器信号COMP2 非反相输入接温度传感器信号两者的反相输入可以共享同一个 VREFINT 或者 DAC 输出。这样单个芯片内部就完成了一个简单的两路模拟比较切换器。6.3 比较器输入选择对功耗的影响低功耗项目里比较器也是常客。但很多人没注意到比较器的输入选择直接关系到静态功耗。在停止模式或者待机模式下如果比较器依旧使能输入引脚上的漏电流和比较器本身的静态电流都会叠加到系统功耗里。如果你用外部引脚作为比较器输入在不使用时尽量把比较器关闭或者把引脚配置为模拟模式并悬空。如果必须保持比较器工作优先选择内部输入源VREFINT 或 DAC因为外部引脚的漏电流受 PCB 污染、湿度和温度影响很大有时候实测功耗会远超数据手册标称值。我见过一个典型案例某低功耗产品在室温下待机电流正常放到高温环境中电流飙高排查到最后发现是比较器外部输入引脚的漏电流随温度上升急剧增大。后来改成用内部基准和内部 DAC 作为比较器输入漏电流问题彻底解决。7. 我自己的体会和一个小技巧关于 CubeMX 比较器输入选择说实话这是一个“看懂了很简单看不懂很痛苦”的配置项。手动点几下下拉框很容易但真正理解非反相输入、反相输入的对应关系理解引脚复用和内部信号互联还是得靠参考手册和数据手册配合着看。我个人的使用习惯是所有涉及比较器的项目在 CubeMX 里配置完成后一定要去参考手册里核对一遍输入选择对应的寄存器编码特别是跨系列移植的时候。不要以为 CubeMX 生成的都是对的——新版 CubeMX 对老型号芯片的某些外设支持力度参差不齐偶尔会有生成代码和预期不符的情况。最后再分享一个非常实用的小技巧调试比较器时可以在芯片外部准备一个可调电压源用来模拟输入信号。从 0V 开始缓慢上调观察比较器输出翻转的电压点。这个翻转点能一次性验证输入引脚连接、阈值电压配置、滞回设置和输出极性是否正确排查效率极高。比你用信号发生器产生复杂波形再慢慢分析要省事得多。希望这篇文章能帮你在 CubeMX 配置比较器输入时少走弯路。如果后面有时间我再单独写一篇关于 F334 高分辨率定时器 PWM 输出的配置详解把 HRTIM 和 COMP 联动的完整代码架构一并拆开讲清楚。