void main(void)
{
_mpuDisable_();
_mpuInit_();
_mpuEnable_();
gioInit();
hetInit();
emif_ASYNC1Init();
emif_ASYNC2Init();
emif_ASYNC3Init();
SYS_S_InitRti();/*初始化实时中断*/
/*先清一次狗,下次清就要约1秒了*/
gioSetBit(gioPORTB, 7, 0);
SYS_Delay(100);
gioSetBit(gioPORTB, 7, 1);
LIB_SCI_Init();
UINT8 s_unWriteData = 6; // 初始写入数据
UINT8 iflash_write_data[32] = {0}; //写入的数值
UINT8 s_unReadData[32] = {0}; // 读取数据缓冲区
Fapi_StatusType oReturnCheck = Fapi_Status_Success;
while(1)
{
//内部flash读写测试
/*擦除扇区*/
if(s_unWriteData==6)
{
memset(s_unReadData, 0, sizeof(s_unReadData)); // 清空读取数据缓冲区
oReturnCheck = Fapi_initializeFlashBanks(80); //初始化Flash Bank以进行API操作
if ((oReturnCheck == Fapi_Status_Success) && (FLASH_CONTROL_REGISTER->FmStat.FMSTAT_BITS.BUSY != Fapi_Status_FsmBusy))
{
Fapi_setActiveFlashBank(Fapi_FlashBank1); //设置活动的Flash Bank
Fapi_enableMainBankSectors(1<<5); //设置EEPROM存储区中可用的扇区以进行擦除和编程
while (FLASH_CONTROL_REGISTER->FmStat.FMSTAT_BITS.BUSY == Fapi_Status_FsmBusy){}
Fapi_issueAsyncCommandWithAddress(Fapi_EraseSector,(uint32_t*)0x002A0000); //向Flash状态机发出命令
while(FLASH_CONTROL_REGISTER->FmStat.FMSTAT_BITS.BUSY == Fapi_Status_FsmBusy);
while(FAPI_GET_FSM_STATUS != Fapi_Status_Success);
Fapi_flushPipeline(); // **刷新Flash流水线**
memset(iflash_write_data, s_unWriteData, sizeof(iflash_write_data)); // 填充写入数据
oReturnCheck = Fapi_issueProgrammingCommand((uint32_t*)0x002A0000,iflash_write_data,32,0,0,Fapi_AutoEccGeneration); /*Programming data to 8th sector*/
while( FAPI_CHECK_FSM_READY_BUSY == Fapi_Status_FsmBusy );
while(FAPI_GET_FSM_STATUS != Fapi_Status_Success);
Fapi_flushPipeline(); // **刷新Flash流水线**
memcpy(s_unReadData, (UINT8*)(0x002A0000), 32);
s_unWriteData =7;
}
}
if(s_unWriteData ==7)
{
memset(s_unReadData, 0, sizeof(s_unReadData)); // 清空读取数据缓冲区
oReturnCheck = Fapi_initializeFlashBanks(80); //初始化Flash Bank以进行API操作
if ((oReturnCheck == Fapi_Status_Success) && (FLASH_CONTROL_REGISTER->FmStat.FMSTAT_BITS.BUSY != Fapi_Status_FsmBusy))
{
Fapi_setActiveFlashBank(Fapi_FlashBank1); //设置活动的Flash Bank
Fapi_enableMainBankSectors(1<<5); //设置EEPROM存储区中可用的扇区以进行擦除和编程
while (FLASH_CONTROL_REGISTER->FmStat.FMSTAT_BITS.BUSY == Fapi_Status_FsmBusy){}
Fapi_issueAsyncCommandWithAddress(Fapi_EraseSector,(uint32_t*)0x002A0000); //向Flash状态机发出命令
Fapi_flushPipeline(); // **刷新Flash流水线**
while(FLASH_CONTROL_REGISTER->FmStat.FMSTAT_BITS.BUSY == Fapi_Status_FsmBusy);
while(FAPI_GET_FSM_STATUS != Fapi_Status_Success);
memset(iflash_write_data, s_unWriteData, sizeof(iflash_write_data)); // 填充写入数据
oReturnCheck = Fapi_issueProgrammingCommand((uint32_t*)0x002A0000,iflash_write_data,32,0,0,Fapi_AutoEccGeneration); /*Programming data to 8th sector*/
while( FAPI_CHECK_FSM_READY_BUSY == Fapi_Status_FsmBusy );
while(FAPI_GET_FSM_STATUS != Fapi_Status_Success);
Fapi_flushPipeline(); // **刷新Flash流水线**
memcpy(s_unReadData, (UINT8*)(0x002A0000), 32);
}
}
while(1){}
}
}