各位大侠,请教一个问题,我把一个能正常执行的芯唐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。 |