Код
void MountDrive(void)
{
uint32_t TotSectors;
uint32_t DataSectors;
uint32_t FirstSector;
struct partrecord *pr;
struct bpb710 *bpb;
int i;
SectorBuffer = (uint32_t*) malloc(512);
if (SectorBuffer == NULL)
{
return;
}
readsector(0, (uint8_t *)SectorBuffer);
то что ниже не привожу, так как проблема возникает выше
}
{
uint32_t TotSectors;
uint32_t DataSectors;
uint32_t FirstSector;
struct partrecord *pr;
struct bpb710 *bpb;
int i;
SectorBuffer = (uint32_t*) malloc(512);
if (SectorBuffer == NULL)
{
return;
}
readsector(0, (uint8_t *)SectorBuffer);
то что ниже не привожу, так как проблема возникает выше
}
SectorBuffer объявлено выше как:
Код
uint32_t *SectorBuffer;
При этом при попытке прочитать сектор программа уходит в HardFault_Handler в файле stm32f10x_it.c и там зависает.
Если поменять код на такой:
Код
void MountDrive(void)
{
uint32_t TotSectors;
uint32_t DataSectors;
uint32_t FirstSector;
struct partrecord *pr;
struct bpb710 *bpb;
int i;
uint8_t buffer[512];
SectorBuffer = (uint32_t *)buffer;
if (SectorBuffer == NULL)
{
return;
}
readsector(0, (uint8_t *)SectorBuffer);
}
{
uint32_t TotSectors;
uint32_t DataSectors;
uint32_t FirstSector;
struct partrecord *pr;
struct bpb710 *bpb;
int i;
uint8_t buffer[512];
SectorBuffer = (uint32_t *)buffer;
if (SectorBuffer == NULL)
{
return;
}
readsector(0, (uint8_t *)SectorBuffer);
}
то сектор читается и перехода в HardFault_Handler не происходит. Вопрос: почему не работает первый вариант кода? Что там не так?