OpenEdv-开源电子网

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

stm32f103zet6 死机

[复制链接]

3

主题

6

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2015-10-17
在线时间
6 小时
发表于 2017-3-14 10:47:55 | 显示全部楼层 |阅读模式
5金钱
        单片机是stm32f103zet6,程序不大。同一个程序,有的板子死机,有的不死机。追查死机原因,是因为一个指针数组的地址变化了。

        for(m1=0;m1<Num;m1++)
                {
                        m3=0;
                        for(m2=0;m2<8;m2++)
                        {
                                if(m1==Num-1&&mood!=0)
                                {
                                        for(m0=0;m0<mood;m0++)m3+=*ReadBL_address[m1*8+m0]<<m0;
                                }
                                else        m3+=*ReadBL_address[m1*8+m2]<<m2;       
                        }
                        *(out+3+m1)=m3;
                        if(*ReadBL_address[80]==1)
                                Send_Num =1+1+1+Num+2;
                }
                       
        }       


就经过这段程序 ,地址变的,
这是数组的初始化
        ReadBL_address[0]=&gl1.wl_bl.out1;
        ReadBL_address[1]=&gl2.wl_bl.out1;
        ReadBL_address[2]=&gl3.wl_bl.out1;
        ReadBL_address[3]=&gl4.wl_bl.out1;
        ReadBL_address[4]=&gl0.wl_bl.out1;
        ReadBL_address[5]=&sn1.wl_bl.out1;
        ReadBL_address[6]=&sn2.wl_bl.out1;
        ReadBL_address[7]=&sn3.wl_bl.out1;
        ReadBL_address[8]=&sn4.wl_bl.out1;
        ReadBL_address[9]=&mh2.wl_bl.out1;
        ReadBL_address[10]=&gl0.wl_bl.out1;
        ReadBL_address[11]=&shui1.wl_bl.out1;
        ReadBL_address[12]=&shui2.wl_bl.out1;
        ReadBL_address[13]=&sj1.wl_bl.out1;
        ReadBL_address[14]=&sj2.wl_bl.out1;
        ReadBL_address[15]=&gl0.wl_bl.out1;
        ReadBL_address[16]=&gl0.wl_bl.out1;
        ReadBL_address[17]=&gl0.wl_bl.out1;
        ReadBL_address[18]=&gl0.wl_bl.out1;
        ReadBL_address[19]=&gl0.wl_bl.out1;
       
        ReadBL_address[20]=&gl1.wl_bl.out2;
        ReadBL_address[21]=&gl2.wl_bl.out2;
        ReadBL_address[22]=&gl3.wl_bl.out2;
        ReadBL_address[23]=&gl4.wl_bl.out2;
        ReadBL_address[24]=&gl0.wl_bl.out2;
        ReadBL_address[25]=&sn1.wl_bl.out2;
        ReadBL_address[26]=&sn2.wl_bl.out2;
        ReadBL_address[27]=&sn3.wl_bl.out2;
        ReadBL_address[28]=&sn4.wl_bl.out2;
        ReadBL_address[29]=&mh2.wl_bl.out2;
        ReadBL_address[30]=&gl0.wl_bl.out2;
        ReadBL_address[31]=&shui1.wl_bl.out2;
        ReadBL_address[32]=&shui2.wl_bl.out2;
        ReadBL_address[33]=&sj1.wl_bl.out2;
        ReadBL_address[34]=&sj2.wl_bl.out2;
        ReadBL_address[35]=&gl0.wl_bl.out2;
        ReadBL_address[36]=&gl0.wl_bl.out2;
        ReadBL_address[37]=&gl0.wl_bl.out2;
        ReadBL_address[38]=&gl0.wl_bl.out2;
        ReadBL_address[39]=&gl0.wl_bl.out2;

求大神们什么原因让地址变得,

这是死机后的地址

这是死机后的地址

这是死机前的

这是死机前的

最佳答案

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

谢谢 ,问题找到了,数组溢出,我现在就是没想明白为什么有的板子没问题,有的有问题,如果每块板子都有问题,我早都开始查代码了,
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

6

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2015-10-17
在线时间
6 小时
 楼主| 发表于 2017-3-14 10:47:56 | 显示全部楼层
谢谢 ,问题找到了,数组溢出,我现在就是没想明白为什么有的板子没问题,有的有问题,如果每块板子都有问题,我早都开始查代码了,
回复

使用道具 举报

3

主题

6

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2015-10-17
在线时间
6 小时
 楼主| 发表于 2017-3-14 14:10:46 | 显示全部楼层
自己顶一个
回复

使用道具 举报

1

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1183
金钱
1183
注册时间
2015-5-28
在线时间
149 小时
发表于 2017-3-14 15:02:47 | 显示全部楼层
这种逻辑问题,可能很多人都难得去分析,也不知道你的具体应用场合。你可以通过串口printf一些log出来,包括索引,地址等等信息,看看是不是每次都在一个逻辑死掉,这样相对好找问题些
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-15 20:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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