我用STM32F103RB模拟模拟EEPROM,主函数部分代码如下:
int main (void)
{
uint8_t i;
uint16_t value=0,index;
u16 data_write=0;
RCC_Configuration();
FLASH_Unlock();
EE_Init();
for (VarValue = 0; VarValue < 1000; VarValue++)
{EE_WriteVariable(VirtAddVarTab[0], 6);}
delay1ms(100);
for(i=0; i<20; i++)
{
EE_ReadVariable(VirtAddVarTab[0]+i, &testtab1[i]);
}
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOC, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOG, ENABLE);
NVIC_Configuration();
Stm32_Gpio_Init();
UART_Configuration();
for(i=0;i<20;i++)
{
usart1_send16bit(testtab1[i]);
}
while(1)
{
}
}
我发现程序在执行EE_WriteVariable或EE_ReadVariable函数时,在两个函数中的
ValidPage = EE_FindValidPage(WRITE_IN_VALID_PAGE);
if (ValidPage == NO_VALID_PAGE)
{
return NO_VALID_PAGE;
}
ValidPage = NO_VALID_PAGE,从而导致函数没有继续执行,也就没有进行读写操作,这是怎么回事啊。 |