[STM32F1] 做的一个流量计

[复制链接]
4902|27
 楼主| xxrs 发表于 2021-8-14 22:45 | 显示全部楼层 |阅读模式
Sun Mar 17, 2013 11:13:14: The stack 'Stack' is filled to 95% (76 bytes used out of 80). The warning threshold is set to 90.%
Sun Mar 17, 2013 11:13:37: Breakpoint hit: Code @ TEMP_PRESS.c:191.5
Sun Mar 17, 2013 11:13:37: The stack 'Stack' is filled to 100% (80 bytes used out of 80). The warning threshold is set to 90.%
Sun Mar 17, 2013 11:13:41: Breakpoint hit: Code @ TEMP_PRESS.c:191.5
Sun Mar 17, 2013 11:13:41: The stack 'Stack' is filled to 100% (80 bytes used out of 80). The warning threshold is set to 90.%
Sun Mar 17, 2013 11:14:28: Breakpoint hit: Code @ TEMP_PRESS.c:191.5

一开始使用95%  后来一直就是100% 这是什么原因呢? 有什么危害?
chuxh 发表于 2021-8-14 22:46 | 显示全部楼层

很可能运行到后面堆栈会越界,造成程序跑飞、死机等..
llljh 发表于 2021-8-14 22:52 | 显示全部楼层
貌似现在这个仪表工作还是比较稳定的
stly 发表于 2021-8-14 22:54 | 显示全部楼层
溢出会出现莫名其妙的错误   在写程序时   最好估算一下代码量
llljh 发表于 2021-8-14 22:56 | 显示全部楼层
把堆栈空间设置大一些就可以,很容易的
pengf 发表于 2021-8-14 22:58 | 显示全部楼层
保险起见还是先调大一些吧。
supernan 发表于 2021-8-14 23:00 | 显示全部楼层
一般的调试器会预先用某个特定值比如0xFF来初始化所有的堆栈
llljh 发表于 2021-8-14 23:03 | 显示全部楼层
看看堆栈内的数据有多少已经不是0xFF,就意味着代码已经使用了多少堆栈
 楼主| xxrs 发表于 2021-8-14 23:05 | 显示全部楼层
代码本身有些问题,有些数据误写入堆栈区域了。
liuzaiy 发表于 2021-8-14 23:10 | 显示全部楼层
实际的堆栈可能只用了30%,但是代码误操作了堆栈最后面的地址,导致调试器初始化的值被修改了。调试器也就认为堆栈越界了。
pengf 发表于 2021-8-14 23:12 | 显示全部楼层
大部分都是因开启了中断。。
juventus9554 发表于 2021-8-14 23:13 | 显示全部楼层
option->debugger里有个download,里面有个use flash loader选项
pengf 发表于 2021-8-14 23:15 | 显示全部楼层
没有对应的中断处理函数导致吧
juventus9554 发表于 2021-8-14 23:17 | 显示全部楼层
这就是堆栈不够用了呗,需要优化下代码的。
 楼主| xxrs 发表于 2021-8-14 23:19 | 显示全部楼层
这个堆栈已经达到100% 的利用率了。。
juventus9554 发表于 2021-8-14 23:21 | 显示全部楼层
这个尽量减少程序中的循环运行的部分,如for循环、if循环判断等语句的。
liuzaiy 发表于 2021-8-14 23:24 | 显示全部楼层
这个就是堆栈溢出的,,看能不能减少程序中的局部变量的。
chuxh 发表于 2021-8-14 23:27 | 显示全部楼层
这个要看运行是否正常。
ousj 发表于 2021-8-14 23:29 | 显示全部楼层
没看懂,流量计跟这些是什么关系
juventus9554 发表于 2021-8-14 23:31 | 显示全部楼层
流量计是用的什么传感器和接口
您需要登录后才可以回帖 登录 | 注册

本版积分规则

405

主题

7415

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部