找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2997|回复: 8
打印 上一主题 下一主题
收起左侧

STM32单片机玄学死机问题

[复制链接]
跳转到指定楼层
楼主
ID:378659 发表于 2020-10-14 00:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5黑币
在stm32f103c8t6(最小系统板)里我在main函数里面定义里一个数组(相当于局部变量),然后main函数里面调用其他.c里面的函数使用了这个数组(函数功能就是求平均值,使用指针传参),此时单片机不会死机,也能正确计算平均值。但是我使用正点原子精英版也就是stm32f103zet6时,同样的代码,却会死机(仿真和实物流水灯确定是死机),仿真确定死机在求平均值的过程(仿真显示死机跳到void HardFault_Handler(void) {
  /* Go to infinite loop when Hard Fault exception occurs */
  while (1)
  {
  }
})这个函数里)然后我把那个数组定义在全局变量里之后就不会死机了。明明在c8t6里那个数组在main里面声明也不会死机啊,但精英版的却会?所以想问问为什么同样的代码不同的单片机一个死机一个不会?谢谢!

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:276663 发表于 2020-10-14 09:18 | 只看该作者
就不能把代码贴出来?谁知道你写的啥样呢?
回复

使用道具 举报

板凳
ID:607298 发表于 2020-10-14 10:00 | 只看该作者
可能局部变量空间分配和释放规则有所不同。
既然使用全局变量没有问题,那就用全局变量了。
回复

使用道具 举报

地板
ID:822755 发表于 2020-10-14 10:37 | 只看该作者
不同项目设置的堆栈大小问题吧。
回复

使用道具 举报

5#
ID:388197 发表于 2020-10-14 15:41 | 只看该作者
查一下程序里有没有指针越界.
比如像这样
char *str = "123\0";
.....
....
str[4] = '4';

当执行到下面那行代码的时候就会出现你说的问题...
回复

使用道具 举报

6#
ID:708637 发表于 2020-10-14 17:52 | 只看该作者
代码代码代码代码
回复

使用道具 举报

7#
ID:84745 发表于 2020-10-15 04:49 | 只看该作者
正点原子用的是103ZEt6你用的是103C8t6两个芯片功能上有点不一样,所以你得在魔术棒里设置成103c8t6的芯片,在c/c++里得把那个‘STM32F10X_HD,USE_STDPERIPH_DRIVER’里的“_HD”改为“_MD”即可。
回复

使用道具 举报

8#
ID:420836 发表于 2020-10-15 10:05 | 只看该作者
请提供相关信息进行分析。
回复

使用道具 举报

9#
ID:342954 发表于 2020-10-15 15:46 | 只看该作者
内存移出了
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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