打印
[STM32F1]

数据处理函数

[复制链接]
527|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhuhuis|  楼主 | 2021-4-6 22:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在做一个数据处理的问题,程序基本可以了,但是加入一个滤波函数f1()的调用后,数据就全乱了,之后把这个函数调用改成紧紧只是调用,不对数据对象进行任何操作,数据任然是乱的,但是一去掉这段调用,数据就正常了,不知道是怎么回事。大概是下面这样的情况,麻烦大师帮忙看看
a是连续输出的,就是说不加a = f1(100);这段,a 出来的数据是正常的,如果加了这段代码,出来的数据就不正常了,我也考虑到了堆栈,但是加大了堆栈,也还是不行,我用的是stm32f407的,程序本身内存消耗就几十k左右
func()
{
....
a = f1(100);
a = f2(b);
....
}

使用特权

评论回复
沙发
xxmmi| | 2021-4-6 23:00 | 只看该作者
是不是堆栈问题或全局变量不对,仿真一下应该能找到原因

使用特权

评论回复
板凳
kangzj| | 2021-4-6 23:01 | 只看该作者

仿真一下,进去看看,那个地方修改了数据。

使用特权

评论回复
地板
gongche| | 2021-4-6 23:04 | 只看该作者
看滤波函数是否确实没有处理数据

使用特权

评论回复
5
huwr| | 2021-4-6 23:08 | 只看该作者
看滤波这一段是不是耗费了太多时间,虽然不改变数据本身,但是时间占用导致循环的时候数据错误。

使用特权

评论回复
6
huanghuac| | 2021-4-6 23:10 | 只看该作者

改小数据量查下;

使用特权

评论回复
7
wenfen| | 2021-4-6 23:12 | 只看该作者
数据定义存在哪里啊?

使用特权

评论回复
8
tian111| | 2021-4-6 23:15 | 只看该作者
最好的办法就是仿真,或者用排除法,把那个函数调用从空函数开始,一句句加上去,看到那一部分出了问题

使用特权

评论回复
9
songqian17| | 2021-4-6 23:17 | 只看该作者
感觉会是参数指针之类的问题吧

使用特权

评论回复
10
chenho| | 2021-4-6 23:20 | 只看该作者
建议采用双缓冲或者4缓冲乒乓方式试试,不过牺牲点内存来换取时间

使用特权

评论回复
11
chenho| | 2021-4-6 23:22 | 只看该作者
建议双缓冲吧~主频很高并不是什么好事

使用特权

评论回复
12
zwll| | 2021-4-6 23:23 | 只看该作者
滤波函数占用的栈空间太大,试着把.s文件中的栈空间改大试试。

使用特权

评论回复
13
dingy| | 2021-4-6 23:25 | 只看该作者

优化一下试试看

使用特权

评论回复
14
zhuhuis|  楼主 | 2021-4-6 23:28 | 只看该作者
多谢大家讨论这么多哈,呵呵

使用特权

评论回复
15
guanjiaer| | 2021-5-6 14:10 | 只看该作者
递归调用太耗费资源

使用特权

评论回复
16
heimaojingzhang| | 2021-5-6 14:10 | 只看该作者
这种堆栈太深了

使用特权

评论回复
17
keaibukelian| | 2021-5-6 14:17 | 只看该作者
最好不要用这种算法

使用特权

评论回复
18
labasi| | 2021-5-6 14:19 | 只看该作者
把没有用的先屏蔽

使用特权

评论回复
19
paotangsan| | 2021-5-6 14:21 | 只看该作者
一开始就这么大的消耗吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

728

主题

8464

帖子

6

粉丝