Здравствуйте,использую Keil и STM32F107, возник вопрос, вот функция
Код:
|
uint8_t CRC_compare(void)
{
uint32_t i=0,FlashBuffer[0xffff],Buffer_Size=0,MyCRC=0,adr=0,mem=0;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE);
adr=0x08000000;
for( i=0x00000; i‹=0x1FFFF; i+=4)
{
adr+=i;
mem=flash_read(adr);
if (mem==0xFFFFFFFF)
break;
else
{
FlashBuffer[Buffer_Size]=mem;
Buffer_Size++;
}
}
CRC_ResetDR();
CRC_CalcBlockCRC((uint32_t *)FlashBuffer, Buffer_Size);
CRCValue=CRC_GetCRC();
MyCRC=flash_read(0x0801FFFC);
if (CRCValue==MyCRC)
{
return 1;
}
else
{
return 0;
}
} |
и проблема в том что,если FlashBuffer задан как локальная переменная то на строчке
Код:
|
FlashBuffer[Buffer_Size]=mem; |
программа уходит в HardFault()
а если FlashBuffer задан как глобальная то все нормально, но мне то она не нужна как глобальная) собственно в чем может быть дело?