完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
adc采集,使用中位滤波,为什么只能采集250次,251就卡死,代码: AD_Value[0]= middleValueFilter(250); uint16_t middleValueFilter(uint16_t N)
} |
|
相关推荐
3个回答
|
|
|
应该是 内存溢出了吧,猜的
|
|
|
|
|
|
根据您提供的代码,可能的原因是在使用中位滤波时,采集的样本数量是固定的250次,超过250次后可能会导致数组越界而卡死。
在代码中,您定义了一个长度为N的value_buf数组用于存储采集到的ADC值。然后,在一个循环中,您通过调用AD_GetValue函数采集到了N次ADC值并存储到value_buf数组中。 接下来,您使用了冒泡排序算法对value_buf数组中的值进行排序,找到中位数并返回。冒泡排序算法有两个嵌套的循环,外层循环控制执行的轮数,内层循环用于交换相邻的两个元素,将较大的元素逐渐后移。 但是,根据您提供的代码,value_buf数组的长度是由参数N决定的,而N的值是250。这意味着在冒泡排序算法中,内层循环只能执行250轮。如果执行的轮数超过250,就会导致数组越界,进一步导致程序卡死。 为了解决该问题,您可以根据实际需求调整value_buf数组的长度,确保数组不会越界。另外,还需要检查AD_GetValue函数是否能够正确地采集到ADC值,并确保采集到的ADC值在合理的范围内。此外,还需要对value_buf数组的长度进行适当的优化,以确保在排序算法中不会出现数组越界的情况。 |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
2810 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
2420 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2288 浏览 0 评论
2404 浏览 1 评论
1643 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-3 00:18 , Processed in 0.549069 second(s), Total 47, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
484