您好!
我们为 CC1312建立了一个 Ota 进程,我们的怀疑是 擦除映像进程堆栈有时是由 VIMSModeSafeSet 函数生成的。
您能解释并描述 VIMSModeSafeSet (VIMS_BASE、VIMS_MODE_DISABLED、TRUE) 和 VIMSModeSet (VIMS_BASE、VIMS_MODE_DISABLED)之间的区别吗?
更多信息:
IAR 8.0.1、
SDK 4_40_04_04
相关的擦除功能:
空 intFlash_Erase (uint32_t FlashAddress)
{
uint8 intFlashTimeout = 100;
/*禁用处理器中断*/
IntMasterDisable();
/*禁用高速缓存*/
VIMSModeSafeSet (VIMS_BASE,VIMS_MODE_DISABLED,TRUE);
/*等待禁用高速缓存中断操作完成*/
while (((VIMSModeGet (VIMS_BASE)!= VIMS_MODE_DISABLED)&&(--intFlashTimeout)){}
FlashSectorErase ( FlashAddress );
/*启用缓存中断*/
VIMSModeSafeSet (VIMS_BASE,VIMS_MODE_ENABLED,TRUE);
/*启用处理器中断*/
IntMasterEnable();
}