OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6474|回复: 6

STM32F103数组计算出错的问题

[复制链接]

1

主题

9

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2021-8-8
在线时间
4 小时
发表于 2021-8-29 21:32:59 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 wanghongmin1 于 2021-8-29 21:49 编辑

具体问题:
开发板是使用的战舰V3(stm32f103),目标是实现一个BCH编解码算法,现在在赋值的时候出现了一个奇怪的问题,过程如下图:
1.png
这里申请了2块内存recd和data,

2.png
data现在随机赋值(0或1),
3.png
而且data可以正常输出。

现在把data的值赋给recd(如下图),(bb[]的值也是0或1,已确认)
4.png

到串口显示出来就出错了(如下图),
5.png
红色圈出来的就是出错的部分(理论上recd的值只会是0或1),而且就这一小部分出错,其他没问题
直接用recd[]=data[]也是可以正确赋值的,但是尝试BCH算法就会出现上面的错误。
理论上recd[]应该是数据位data[]和校验位bb[]的总和,
同样的算法在PC上可以正常通过,没问题的,移植到了stm32板子上就有上述问题,实在想不明白,还请各位大神解惑。
6.png
(程序在PC上和开发板上运行对比截图,详细源码已附上)




main.rar

81.14 KB, 下载次数: 1

源程序

最佳答案

查看完整内容[请看2#楼]

一般奇怪的问题是由堆栈溢出或数组越界引起,建议不用malloc,而用全局变量数组,看编译出来的内存分配情况。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

3394

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8663
金钱
8663
注册时间
2020-5-11
在线时间
4127 小时
发表于 2021-8-29 21:33:00 | 显示全部楼层
一般奇怪的问题是由堆栈溢出或数组越界引起,建议不用malloc,而用全局变量数组,看编译出来的内存分配情况。
专治疑难杂症
回复

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2021-8-8
在线时间
4 小时
 楼主| 发表于 2021-8-30 10:59:09 | 显示全部楼层
LcwSwust 发表于 2021-8-30 09:49
一般奇怪的问题是由堆栈溢出或数组越界引起,建议不用malloc,而用全局变量数组,看编译出来的内存分配情况 ...

尝试使用全局变量数组会出现容量不够不能编译的情况,请问大神何解? 1.png
回复

使用道具 举报

12

主题

3394

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8663
金钱
8663
注册时间
2020-5-11
在线时间
4127 小时
发表于 2021-8-30 11:06:23 | 显示全部楼层
wanghongmin1 发表于 2021-8-30 10:59
尝试使用全局变量数组会出现容量不够不能编译的情况,请问大神何解?

你的单片机具体型号是?
startup   .s 文件里定义的堆栈空间有多大?

也可先将数组整小些直到编译通过,再看看内存分配情况.
专治疑难杂症
回复

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2021-8-8
在线时间
4 小时
 楼主| 发表于 2021-8-30 11:52:59 | 显示全部楼层
LcwSwust 发表于 2021-8-30 11:06
你的单片机具体型号是?
startup   .s 文件里定义的堆栈空间有多大?

单片机型号是STM32F103ZET6,堆栈分配如图: 2.png

回复

使用道具 举报

12

主题

3394

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8663
金钱
8663
注册时间
2020-5-11
在线时间
4127 小时
发表于 2021-8-30 13:12:44 | 显示全部楼层
wanghongmin1 发表于 2021-8-30 11:52
单片机型号是STM32F103ZET6,堆栈分配如图:

编译后有个.map文件,你用记事本打开看看,重点关注RW Data    ZI Data
专治疑难杂症
回复

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2021-8-8
在线时间
4 小时
 楼主| 发表于 2021-8-30 15:59:50 | 显示全部楼层
LcwSwust 发表于 2021-8-30 13:12
编译后有个.map文件,你用记事本打开看看,重点关注RW Data    ZI Data

3.png
谢谢,发现数据确实超了,我尝试修改一下,减小计算量试试
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-6 19:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表