前言' e4 d3 N7 z& U( w, W) p 某客户在调试STM32L053的比较器1时,使用内部1.2V的参考电压,没有问题.但当使用比较器2时,使用同样的设置,却发现比较电压无法调到1.2V,只能设置到0.6V左右,到时是什么问题呢?3 d) C6 N% F$ O. Z u, F 问题解决9 ~0 \4 `; ^" e) `; ?8 U . G9 Y2 A) |. ^. G X( S: \( T 问题调试% O( T- M; {9 g$ n. m$ h2 f 首先得到这个问题,我们先比较一下两种现象之间的设置问题,发现比较器1和比较器2的设置都是一样的.然后我们通过修改比较器2的内部比较电压查看现象,发现就算我们设置为二分之一的内部参考电压(二分之一的1.2V),触发门限依旧是0.6V.即使使用cubeMx重新生成代码,现象也没有得到解决.5 a+ w6 p- ~1 Y8 o7 J 解决方法 然后我们开始查看参考手册,我们猜想,两个比较器之间是否有不一样的设置,以为比较器2更为高级,有更多的设置.排除功耗和速度的不一样设置外.我们通过搜寻comp2发现其在Reference control and status register (SYSCFG_CFGR3)里面有个不一样的设置, Bit 0 EN_VREFINT.具体描述如下 :/ y0 m' J9 w d5 R5 V+ M0 K 如描述,我们在某些模式下,必须设置这一位.所以我们做以下修改.在使能比较器2之前先设置这一位./ V0 r/ m: T8 t0 C* v+ c # X5 H. d, z2 i; O) t SET_BIT (SYSCFG->CFGR3, 1); HAL_COMP_Start(&hcomp2); 在这修改后,比较器2的比较电压可以得到正常的电压值,如1.2V. , d& R/ r: d/ H5 [2 w+ N% Y9 P 总结 在同一个类型外设中,如果两个外设同样的设置,却得不到同样的效果.我们可以通过查询参考手册对于这两个外设的不同描述,根据不同的描述,找出与现象之间有相关的差异,进行修改与调试.往往可以得到比较好的效果,或者提示$ L& z# i$ M& }0 x# _, H7 E2 _* o & n' [% O: B+ `8 c( p+ t- R, Y f 文档下载>>8 K5 r) K# c+ p) y f . k0 z8 _( C2 y' r 更多实战经验>>; v/ j( _/ |! l: R8 Y; `8 d 3 O3 M4 B6 y- z3 z |
基于STM32L051使用CubeMX生成工程文件ST系列芯片通用经验分享
基于STM32L051开始添加需要的代码经验分享
STM32L051测试I2C协议设备的添加经验分享
基于STM32L051测试Flash和EEPROM的读写
基于STM32L051串口测试与Enocean模块通讯问题
基于STM32L0的EEPROM读写经验分享
基于STM32L0 ADC使用HAL库关于校准问题经验分享
【工程师笔记】汇总处
【经验之谈】基于STM32L053芯片使用STM32CUBE软件开发低功耗设备的经验分享
在 STM32L0 和 STM32L4 系列微控制器中使用 LPUART 使功耗最小
啊?什么意思啊?