OpenEdv-开源电子网

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

求助,新手犯错,赋值给野指针,出现程序下载不了。

[复制链接]

14

主题

56

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
239
金钱
239
注册时间
2018-7-12
在线时间
31 小时
发表于 2019-5-28 15:54:11 | 显示全部楼层 |阅读模式
5金钱
求助求助!本人粗心导致的问题 望大神帮助解答!!问题是以下代码导致:
void ReadMcu(unsigned char *p)
{
          unsigned char *addr=0;
          unsigned short int i=0,number=0;

          addr = (unsigned char *)&DevSetting;
          number = sizeof(DevSetting);


                FLASH_ReadMore(DEVICE_SET_ADDR,256,(unsigned int *)&DevSetting);
       
                for(i=0;i<number;i++)//这里给野指针和往后的256位数据都赋值了
                {
                    *p = *addr;
                           p++;
                           addr++;
                }

}

void Readall(void)
{

unsigned char *temp;
ReadMcu(temp);


}

下载程序进去之后出现,就再也下不进去程序了,报错如下Unkonw CPU ;于是我把此函数注释 只运行到定义指针那,看到指指向的值为0x4800 0000,看了一下手册 这个地址指向GPIOA
所以我觉得是设置到什么东西了,,望大神指教啊~

最佳答案

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

unsigned char *temp; ReadMcu(temp); 这里只定义了指针, 可没给它分配空间呢, 不出错才怪 把它改为这样, 是不是256自己改吧 unsigned char temp[256];
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2019-5-28 15:54:12 | 显示全部楼层
unsigned char *temp;
ReadMcu(temp);
这里只定义了指针, 可没给它分配空间呢, 不出错才怪
把它改为这样, 是不是256自己改吧
unsigned char temp[256];

回复

使用道具 举报

4

主题

98

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3941
金钱
3941
注册时间
2018-5-25
在线时间
909 小时
发表于 2019-5-28 15:58:56 | 显示全部楼层
用5针SWD口,用STM32 ST-LINK Utility软件多换几种模式擦除芯片;如果有离线烧写器,也可以用离线烧写器进行擦除
回复

使用道具 举报

14

主题

56

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
239
金钱
239
注册时间
2018-7-12
在线时间
31 小时
 楼主| 发表于 2019-5-29 11:14:03 | 显示全部楼层
edmund1234 发表于 2019-5-28 15:54
unsigned char *temp;
ReadMcu(temp);
这里只定义了指针, 可没给它分配空间呢, 不出错才怪

我回头看知道是这里出错了啊,问题是下载不了程序了。。
回复

使用道具 举报

4

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2019-5-5
在线时间
13 小时
发表于 2019-5-29 21:16:56 | 显示全部楼层
多试几种下载方式
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2019-5-29 21:49:01 | 显示全部楼层
猎人123 发表于 2019-5-29 11:14
我回头看知道是这里出错了啊,问题是下载不了程序了。。

不管你写的代码是对的还是错的,只要能通过编译, 它都能下载。
编译通过,如果不能下载  那就与你代码怎样写没关系。去找别的原因吧
回复

使用道具 举报

14

主题

56

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
239
金钱
239
注册时间
2018-7-12
在线时间
31 小时
 楼主| 发表于 2019-5-30 16:27:41 | 显示全部楼层
edmund1234 发表于 2019-5-29 21:49
不管你写的代码是对的还是错的,只要能通过编译, 它都能下载。
编译通过,如果不能下载  那就与你代码 ...

是编译可以通过~第一次可以下载程序进去,第二次就不能再下载了。。我连续试了两块板子,都是这个情况。就是这段代码导致的。估计是野指针赋值配置到下载口的IO设置了。
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2019-5-30 22:16:54 | 显示全部楼层
猎人123 发表于 2019-5-30 16:27
是编译可以通过~第一次可以下载程序进去,第二次就不能再下载了。。我连续试了两块板子,都是这个情况。 ...

我认为,你的问题不是下载不了,而是下载完, 复位后, 指针误操作,把刚下载好的程序写没了

回复

使用道具 举报

0

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2015-9-11
在线时间
45 小时
发表于 2019-5-31 09:09:17 | 显示全部楼层
BOOT0接1,然后下载正常程序
回复

使用道具 举报

14

主题

56

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
239
金钱
239
注册时间
2018-7-12
在线时间
31 小时
 楼主| 发表于 2019-5-31 10:09:56 | 显示全部楼层
edmund1234 发表于 2019-5-30 22:16
我认为,你的问题不是下载不了,而是下载完, 复位后, 指针误操作,把刚下载好的程序写没了

写没了是什么意思啊。。请指教。。第二次就下载不进去程序了。
回复

使用道具 举报

14

主题

56

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
239
金钱
239
注册时间
2018-7-12
在线时间
31 小时
 楼主| 发表于 2019-5-31 10:10:55 | 显示全部楼层
莫名 发表于 2019-5-31 09:09
BOOT0接1,然后下载正常程序

老铁 我试过这招了 下载正常程序可以运行,但是换Boot接0的时候还是识别不了
回复

使用道具 举报

14

主题

56

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
239
金钱
239
注册时间
2018-7-12
在线时间
31 小时
 楼主| 发表于 2019-6-4 13:37:55 | 显示全部楼层
问题解决了,用IAP串口下载正确的程序进去,之前还是没有解决的原因是工程配置有问题,在配置里面debug->setting勾选上reset after connect问题就解决了,具体是为什么不知道。。还希望有大神解答。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-9 05:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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