STM32内存申请问题

[复制链接]
4040|2
 楼主| z_zt 发表于 2012-5-2 10:02 | 显示全部楼层 |阅读模式
各位大侠,请教一个问题,我把一个能正常执行的芯唐M0程序(IAR)移植到STM32里,结果执行不正常;程序代程如下:
void load_data(void)
{
SaKeyGroup *tmpSaKey=NULL;

tmpSaKey=(SaKeyGroup *)malloc(sizeof(SaKeyGroup));
while(tmpCpuKey==NULL);
data_read(512, sizeof(SaKeyGroup), &tmpSaKey->SaveData[0]);
if ((&tmpSaKey->SaveData[0])!=0x55)
{
  save_data();
}
else
{
  ...
}
}
void save_data(void)
{
SaKeyGroup *tmpSaKey=NULL;

...

tmpSaKey=(SaKeyGroup *)malloc(sizeof(SaKeyGroup));
while(tmpCpuKey==NULL);
data_write(512, sizeof(SaKeyGroup), &tmpSaKey->SaveData[0]);
}
int main(void)
{
...
load_data();
...
while(1)
{
  ...
}
}

断点跟踪情况如下:
  执行到save_data()里的while(tmpCpuKey==NULL);时,下不去,我猜问题应该是内存没有申请成功,但不知原因,sizeof(SaKeyGroup)是408个字节,这段程序在芯唐M0里完全没有问题,stm32用flash和ram均大于nuvoton的芯片,环境是IAR,版本完全一致,是同一台电脑上的同一个IAR。
aozima 发表于 2012-5-2 10:16 | 显示全部楼层
使用编译器提供的malloc需要提前设定heap的大小,并注意malloc的多线程不安全性。
 楼主| z_zt 发表于 2012-5-2 14:04 | 显示全部楼层
okay了,感谢aozima大师,感谢感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

47

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部