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

2019-07-21 00:26发布

求助求助!本人粗心导致的问题 望大神帮助解答!!问题是以下代码导致:
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
所以我觉得是设置到什么东西了,,望大神指教啊~

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
edmund1234
1楼-- · 2019-07-21 01:51
unsigned char *temp;
ReadMcu(temp);
这里只定义了指针, 可没给它分配空间呢, 不出错才怪
把它改为这样, 是不是256自己改吧
unsigned char temp[256];

zdes33ss
2楼-- · 2019-07-21 06:21
用5针SWD口,用STM32 ST-LINK Utility软件多换几种模式擦除芯片;如果有离线烧写器,也可以用离线烧写器进行擦除
猎人123
3楼-- · 2019-07-21 07:25
edmund1234 发表于 2019-5-28 15:54
unsigned char *temp;
ReadMcu(temp);
这里只定义了指针, 可没给它分配空间呢, 不出错才怪

我回头看知道是这里出错了啊,问题是下载不了程序了。。
MXA
4楼-- · 2019-07-21 10:08
多试几种下载方式
edmund1234
5楼-- · 2019-07-21 12:41
 精彩回答 2  元偷偷看……
猎人123
6楼-- · 2019-07-21 18:08
edmund1234 发表于 2019-5-29 21:49
不管你写的代码是对的还是错的,只要能通过编译, 它都能下载。
编译通过,如果不能下载  那就与你代码 ...

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

一周热门 更多>