25Q64写函数如下:
void Flash_Read_Array(unsigned long nAddr, unsigned char *pData, unsigned short nCount)
{
unsigned char *pAddr;
pAddr = (unsigned char *)&nAddr;
// printf(".......................2\r\n");
FLASHCSLow();
Flash_Send_Byte(FLASH_CMD_READ);
Flash_Send_Byte(*(pAddr + 2));
Flash_Send_Byte(*(pAddr + 1));
Flash_Send_Byte(*(pAddr + 0));
while(nCount--)
{
*pData++ = Flash_Get_Byte();
}
// printf(".......................3\r\n");
FLASHCSHigh();
}
如果按以下操作,会卡住:
sInnerRecord *tespRecord;
Flash_Read_Array(INNER_FLASH_RECORD_START + index * sizeof(sInnerRecord), (uint8_t *)tespRecord, sizeof(sInnerRecord));
以下操作则可正常写入:
sInnerRecord tespRecord;
Flash_Read_Array(INNER_FLASH_RECORD_START + index * sizeof(sInnerRecord), (uint8_t *)&tespRecord, sizeof(sInnerRecord));