|
我使用 HAL_ADC_Start_IT 函数,让 ADC 外设在每次转换完成后持续触发中断,然后通过 UART 打印转换后的数值。 然而,我启用了连续转换模式,当我调节电位器时,也看不到 ADC 数值发生变化。显然 HAL_ADC_Start_IT 并没有持续运行。 另外,当我像下面这样在回调函数中重新调用 HAL_ADC_Start_IT 时,功能就可以正常工作了。 / USER CODE BEGIN PFP / void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc) { adcVal = HAL_ADC_GetValue(&hadc1); HAL_ADC_Start_IT(&hadc1); } / USER CODE END PFP / |
Snow Rider: The Endless Winter Rush That’s Easy to Start
Ragdoll Archers: Physics-Based Bow & Arrow Chaos
STM32F103RCT6断电以后,ADC会漏电
STM32H7A3 怎样配置MDMA的硬件触发MDMA_REQUEST_DMA1_Stream0_TC将数据再次转运
STM32H7A3RGT6 ADC 8位采样速度只能达到3.5MSPS达不到数据手册上的7MSPS ?
STM32F103C8T6是否支持TIM3的PWM边沿触发AD采集
stm32H503CBT6 ADC在某次上电后波动变大了一些。
STM32H743 的ADC线性校准问题
STM32L431CCT6芯片的ADC差分采集
STM32H743内部温度传感器读数错误
微信公众号
手机版
其次去掉打印,看看ADC 的值是否每次刷新正常,毕竟ADC的转换速度快,有可能被打印阻塞了。
另外每次描述问题,请先说明使用的型号,思路,配置,结果,并附上关键的截图,能上传IOC 和项目文件就更好了。这样小伙伴们就有方向帮你验证了。
其次去掉打印,看看ADC 的值是否每次刷新正常,毕竟ADC的转换速度快,有可能被打印阻塞了。
另外每次描述问题,请先说明使用的型号,思路,配置,结果,并附上关键的截图,能上传IOC 和项目文件就更好了。这样小伙伴们就有方向帮你验证了。
你每次转换完成会触发中断,如果UART的打印输出在主流程里,基本没有机会、甚至完全没有机会来实现打印输出的,具体取决于你每次ADC转换所花的时间,时间越短越难有机会做UART打印。另外,还要注意可能出现ADC结果溢出方面的问题。
当然,你现在改成在中断里做ADC结果的获取、甚至做UART打印应该是没问题的。不过也要注意中断优先级方面的问题,避免出现死等堵塞的情况。
你可以这样,用个TIMER来定时触发ADC,不要太快了,否则没机会做UART打印。
如果通道多,数据多,可以基于序列完成中断来实现打印输出,而不用每个通道转换完成都进中断。