因为要做IAP,所有测试一下读写内部FLASH。
刚刚测试了,向内部FLASH中写数据,没有问题。
可是写保护怎么也弄不对,程序是EXAMPLE里的历程改的,每次写保护某些页后,函数的返回值都是错的(FLASH_ERROR_PG)。用FLASH LOADER 查看整个FLASH的状态,没有写保护成功。………………
以下是程序:
int main(void)
{
FLASHStatus = FLASH_COMPLETE;
MemoryProgramStatus = PASSED;
Data = 0x1753;
EraseCounter = 0x0;
/* RCC Configuration */
RCC_Configuration();
/* NVIC Configuration */
NVIC_Configuration();
/* 串口初始化 */
Stm32f103b_Usart1Init();
/* Unlock the Flash Program Erase controller */
FLASH_Unlock();
/* Define the number of page to be erased */
NbrOfPage = (EndAddr - StartAddr) / FLASH_PAGE_SIZE;
FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP|FLASH_FLAG_PGERR |FLASH_FLAG_WRPRTERR);
/* Get pages write protection status */
WRPR_Value = FLASH_GetWriteProtectionOptionByte();
ProtectedPages = WRPR_Value & 0x000000C0;
if (ProtectedPages != 0x00)
{/* Pages not write protected */
/* Enable the pages write protection */
printf("flash is not protected!!!\n");
FLASHStatus = FLASH_EnableWriteProtection(FLASH_WRProt_Pages24to27 |FLASH_WRProt_Pages28to31);
if (FLASHStatus!=FLASH_COMPLETE) printf("FLASHStatus = %d\n",FLASHStatus);
/* Generate System Reset to load the new option byte values */
NVIC_GenerateSystemReset();
}
else
{
printf("flash is protected!!!\n");
}
while (1)
{
}
}