你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32F723ZET6使用ADC捕获正弦波,adc采样频率过高导致主函数无法运行,要怎么优化?

[复制链接]
代码萌新 提问时间:2025-6-23 14:06 / 未解决

用定时器TIM2,200khz触发ADC采样,每次采样后进行数据存储,采样1000个后置标志位,在主循环中上报1000个点数据。100khz还是能正常上报的,200khz情况下在主循环打断点一直进不去了,要如何优化我的adc采样?企业微信截图_17506574342432.png企业微信截图_175065742091.png

企业微信截图_175065742091.png
企业微信截图_17506574342432.png
收藏 评论4 发布时间:2025-6-23 14:06

举报

4个回答
xmshao 回答时间:4 天前
如果ADC结果是基于中断方式提取的话,建议使用DMA进行数据的提取。


如果已经是DMA提取数据了,可以考虑将每轮DMA传输的数据加长点, 基于传输半完成和完成中断


来提取数据,确保数据连续又不发生覆盖或丢失。


适当加大代码优化等级。代码逻辑及执行效率尽量优化,这个可能需要你自己完成。
代码萌新 回答时间:4 天前

xmshao 发表于 2025-6-23 15:42
如果ADC结果是基于中断方式提取的话,建议使用DMA进行数据的提取。</p>
<p>

好的,我会去扩大dma的buff来减少运算压力,但是回调函数执行这些语句需要耗时超过5us吗?企业微信截图_17506574342432.png

butterflyspring 回答时间:3 天前
代码萌新 发表于 2025-6-23 17:35
[md]好的,我会去扩大dma的buff来减少运算压力,但是回调函数执行这些语句需要耗时超过5us吗?![企业微信 ...

可以测试一下这些代码执行的时间,这样就更准确判断速度是否合适。
xmshao 回答时间:3 天前
你是指数据处理相关代码所花时间吧。


这个时间应该从DMA完成中断触发后开始考虑。STM32库代码的里的中断服务程序写的非常丰富,判


断流程也多,你可以基于它做针对性地瘦身,只提取自己关注的标志及判断,最好自己重新组织下代码。


另外具体到你这里用户回调函数,你也要注意代码的执行效率,平常不关注时间时代码啰嗦点,只要能实现


功能倒也罢了,这些时间敏感的地方可能要多琢磨下代码写法,尽量使用运行效率最佳的代码写法。


比方代码里尽量避免函数调用,选择最省时的循环方式。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版