rt-thread icon indicating copy to clipboard operation
rt-thread copied to clipboard

函数rt_adc_voltage获取电压不正确

Open youzuwei opened this issue 1 year ago • 2 comments

版本v5.0.2 芯片stm32f429 BSP stm32 在文件adc.c中, 函数rt_adc_voltage(...)获取电压不正确。原因:rt_adc_voltage(...)函数调用了驱动层文件drv_adc.c中的stm32_adc_get_vref(...)函数,这个函数在获取参考电压后会禁用adc外设。提点小意见:这个函数不是很合理,驱动层不应该调用应用层的函数

youzuwei avatar Nov 04 '23 04:11 youzuwei

1、adc.c文件中给出的api接口其实还是隶属于驱动层,rt_adc_voltage,rt_adc_read,等只是驱动框架封装的更好用的方便调试的api接口, 2、应用层如果要使用adc设备的话,理论上应该去调用rt_device_find和rt_device_read等标准设备框架提供的接口 3、虽然应用层绕过标准设备框架去调用rt_adc_voltage等接口虽然可以,但是不太合理 4、rtt很多驱动代码都是第三方提供的,不一定严格按照device标准设备框架去适配,且标准设备框架也挺占资源的

如果使用标准设备api接口的话,_adc_control 这个接口是存在一些bug的,代码可能需要修改成下边这样: image 如果要使用rt_adc_voltage接口的话需要回退到5.0.1版本,去掉5.0.2的补丁 image 红线处需要保留,因为获取参考电压后adc外设被关掉了

illusionkiller avatar Dec 07 '23 01:12 illusionkiller

问题已解决,感谢回复

youzuwei avatar Dec 15 '23 10:12 youzuwei