[STM32F1] 程序跑飞的问题

[复制链接]
3326|42
 楼主| 比神乐 发表于 2020-8-26 15:15 | 显示全部楼层
ayb_ice 发表于 2020-8-26 15:09
就是越界了而已

可是我调试时发现没有越界呀
 楼主| 比神乐 发表于 2020-8-26 15:16 | 显示全部楼层
sonicll 发表于 2020-8-26 15:10
因为 sprintf(s, "%-10.2f", ShiftValue0),10位长度2位小数,ShiftValue0的整数部分很大的话,这个格式化 ...

整数部分没有那么大,最多5位数
ayb_ice 发表于 2020-8-26 15:21 | 显示全部楼层
比神乐 发表于 2020-8-26 15:16
整数部分没有那么大,最多5位数

就算5位整数,还有符号位,小数点,2位小数,还有结束符0,越界了
 楼主| 比神乐 发表于 2020-8-26 15:28 | 显示全部楼层
ayb_ice 发表于 2020-8-26 15:21
就算5位整数,还有符号位,小数点,2位小数,还有结束符0,越界了

我说最多5位整数,可调试时就一位整数。我截图给你看
 楼主| 比神乐 发表于 2020-8-26 15:32 | 显示全部楼层
1.jpg
看,整数部分1位,是0.
0x0e是小数点。
ayb_ice 发表于 2020-8-26 15:35 | 显示全部楼层
本帖最后由 ayb_ice 于 2020-8-26 15:38 编辑
比神乐 发表于 2020-8-26 15:32
看,整数部分1位,是0.
0x0e是小数点。

你自己都指定了输出宽度,10位宽度,后面会自动补的
先把缓冲区搞长点,看调用sprintf后缓冲区的内容就清楚了
 楼主| 比神乐 发表于 2020-8-26 15:37 | 显示全部楼层
ayb_ice 发表于 2020-8-26 15:35
你自己都指定了输出宽度,10位宽度,后面会自动补的

是吗?我再看看
香水城 发表于 2020-8-26 15:40 | 显示全部楼层
比神乐 发表于 2020-8-26 15:06
谢谢!我把s[8]改为s[18]就好了,可是我不懂为什么就好了。
你给我讲讲

明明数组越界了 还说没越界。可爱~
 楼主| 比神乐 发表于 2020-8-26 15:44 | 显示全部楼层
ayb_ice 发表于 2020-8-26 15:35
你自己都指定了输出宽度,10位宽度,后面会自动补的
先把缓冲区搞长点,看调用sprintf后缓冲区的内容就清 ...

sprintf(s, "%-8.2f", ShiftValue0); //产生:" 123 4567"
我试了一下啊,-8.2f不行,
-7.2f就可以。
算了,写-5.2f吧。
谢谢大神
 楼主| 比神乐 发表于 2020-8-26 15:46 | 显示全部楼层
香水城 发表于 2020-8-26 15:40
明明数组越界了 还说没越界。可爱~

版主出来了,我感到很荣幸。
我写-7.2f可以,如果是自动补全的话,也会溢出的吧。
我很想搞清楚,好几个高手帮我,可是我还是糊里糊涂,我太菜了
 楼主| 比神乐 发表于 2020-8-26 15:51 | 显示全部楼层
2.jpg
我程序里有好多-10.2f这样的语句,都没问题。
我快崩溃了。
 楼主| 比神乐 发表于 2020-8-26 15:54 | 显示全部楼层
3.jpg
我百度搜索的。
m表示打印宽度,可是打印出来没有那么宽。
香水城 发表于 2020-8-26 16:40 | 显示全部楼层
本帖最后由 香水城 于 2020-8-26 17:02 编辑

还有 就是注意堆栈溢出方面的问题,你可以把堆栈加大点比较测试下
 楼主| 比神乐 发表于 2020-8-26 16:42 | 显示全部楼层
香水城 发表于 2020-8-26 16:40
还有 就是注意堆栈溢出方面的问题

嗯嗯
a13528442080 发表于 2020-8-27 09:33 | 显示全部楼层
解决了吗
 楼主| 比神乐 发表于 2020-8-27 09:42 | 显示全部楼层
ayb_ice 发表于 2020-8-27 09:44 | 显示全部楼层
比神乐 发表于 2020-8-26 15:54
我百度搜索的。
m表示打印宽度,可是打印出来没有那么宽。

这样也溢出了,只是没有死机而已,不是溢出就一定会死机的
前面已经説了,你先把缓冲区设置大些,然后调用sprintf,再看缓冲区内容就知道了
 楼主| 比神乐 发表于 2020-8-27 10:27 | 显示全部楼层
ayb_ice 发表于 2020-8-27 09:44
这样也溢出了,只是没有死机而已,不是溢出就一定会死机的
前面已经説了,你先把缓冲区设置大些,然后调 ...

谢谢!我看看
 楼主| 比神乐 发表于 2020-8-27 10:41 | 显示全部楼层
ayb_ice 发表于 2020-8-27 09:44
这样也溢出了,只是没有死机而已,不是溢出就一定会死机的
前面已经説了,你先把缓冲区设置大些,然后调 ...

谢谢,我明白了,你真是个大神
lihui567 发表于 2020-8-27 11:30 | 显示全部楼层
你可以单步调试仿真,看看程序走到那个函数,进去后进入硬件错误中断了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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