打印

STM32内存申请问题

[复制链接]
3560|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

粉丝