OpenEdv-开源电子网

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

关于STM32F103单片机死机的问题

[复制链接]

6

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2015-6-13
在线时间
19 小时
发表于 2015-7-16 18:23:13 | 显示全部楼层 |阅读模式
5金钱
原子哥,各位:
        我项目用的是STM32F103单片机,初始化参数时需要从EEPROM中读一个数组,但是程序下载进去就死机,后来才发现是读EEPROM导致的,因为我注释掉读EEPROM那段代码就没有死机的问题了,下面为代码截图,麻烦大家帮我分析一下

是什么原因,先谢了!

最佳答案

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

回复【2楼】lycreturn: ---------------------------------         原因找到了,是数组越界导致的.我那个数组里面的元素是另一个函数指针数组里面的数组下标.这样开机的时候这个数组的值非常大,因为默认情况下EEPROM里面全部都是1,也就是说读出来的值全部都是65535,结果单片机执行那个函数指针数组的时候就越界了,然后就死机了.还有上面那个如果代码写错了,应该是if(Config_chun>  ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2015-6-13
在线时间
19 小时
 楼主| 发表于 2015-7-16 18:23:14 | 显示全部楼层
回复【2楼】lycreturn:
---------------------------------
        原因找到了,是数组越界导致的.我那个数组里面的元素是另一个函数指针数组里面的数组下标.这样开机的时候这个数组的值非常大,因为默认情况下EEPROM里面全部都是1,也就是说读出来的值全部都是65535,结果单片机执行那个函数指针数组的时候就越界了,然后就死机了.还有上面那个如果代码写错了,应该是if(Config_chun> 500) Config_chun = 0; 如果是这样就没问题了.
        看来以后真要注意数组越界的问题了,不然可能会出现各种莫名其妙的问题,上次也出现另外一个数组莫名其妙的被修改的问题,结果也是另外一个数组越界使用的问题.
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5781
金钱
5781
注册时间
2013-11-22
在线时间
1212 小时
发表于 2015-7-16 22:21:42 | 显示全部楼层
点进此函数看看   是不是配置的问题
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-7-17 11:05:07 | 显示全部楼层
目测区别在于数组数据类型
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

6

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2015-6-13
在线时间
19 小时
 楼主| 发表于 2015-7-17 21:47:14 | 显示全部楼层
回复【3楼】龙之谷:
---------------------------------
呵呵!数组越界的问题,以后写项目的时候真要注意数组的使用,数组越界使用有时候会导致各种莫名其妙的问题,有时候查都查不出来.
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 22:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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