问题一:EALLOW;EDIS;何时用何时不用呢?有文档吗?
问题二:EALLOW;解除受保护的寄存器后,如果我操作擦除FLASH过程中会不会因为被中断影响我的擦除FLASH?因为我再调试的过程中,通过以下函数方式去执行,会出现进入非法中断如图片。
void main()
{
DINT;//关闭中断
EALLOW;
//以下是执行擦除FLASH的操作函数
oReturnCheck = Fapi_initializeAPI(F021_CPU0_BASE_ADDRESS, 100);
if(oReturnCheck != Fapi_Status_Success)
{
// Check Flash API documentation for possible errors
Example_Error(oReturnCheck);//cs
}
oReturnCheck = Fapi_setActiveFlashBank(Fapi_FlashBank0);
oReturnCheck = Fapi_Status_Success;
// Check Flash API documentation for possible errors
if(oReturnCheck == Fapi_Status_Success)
{
for(i = 0; i < EraseSectorNum; i++)
{
SysCtl_serviceWatchdog();
// Erase Flash Bank0 sector6
oReturnCheck = Fapi_issueAsyncCommandWithAddress(Fapi_EraseSector,
(uint32 *)(Bzero_Sector5_start + 0x1000 * i));
// Wait until FSM is done with erase sector operation
while (Fapi_checkFsmForReady() != Fapi_Status_FsmReady){}
// Read FMSTAT register contents to know the status of FSM after
// erase command to see if there are any erase operation related errors
oFlashStatus = Fapi_getFsmStatus();
if(oFlashStatus != 0)
{
FMSTAT_Fail();
}
EDIS;
EINT; // 开中断
}
void Example_Error(Fapi_StatusType status)
{
// Error code will be in the status parameter
__asm(" ESTOP0");
}