完善资料让更多小伙伴认识你,还能领取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数组的长度进行适当的优化,以确保在排序算法中不会出现数组越界的情况。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2272 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
2083 浏览 3 评论
4708 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2229 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2773 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 19:49 , Processed in 0.615265 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号