1.SRAM BIST功能,大家有没有用过?下面的代码执行后单片机运行不正常。
void SRAM_BIST(void)
{
/* Unlock protected registers */
SYS_UnlockReg();
SYS->SRAM_BISTCTL |= BIT0;
//while((SYS->SRAM_BISTSTS & BIT16)==0);
delay_ms(10);
if(SYS->SRAM_BISTSTS & BIT0)
{
ErrorFlag |= BIT2; //bit2(BIT2)-Hard Fault或Memory Error
}
SYS->SRAM_BISTCTL &= ~BIT0;
SYS->SRAM_BISTCTL |= BIT1;
//while((SYS->SRAM_BISTSTS & BIT17)==0);
delay_ms(10);
if(SYS->SRAM_BISTSTS & BIT1)
{
ErrorFlag |= BIT2; //bit2(BIT2)-Hard Fault或Memory Error
}
SYS->SRAM_BISTCTL &= ~BIT1;
/* Lock protected registers */
SYS_LockReg();
}
2.SRAM奇偶校验功能。下面的代码执行后单片机运行不正常。
初始化:
/*打开系统SRAM奇偶校验*/
SYS->SRAM_INTCTL |= SYS_SRAM_INTCTL_PERRIEN_Msk;
NVIC_EnableIRQ(RAMPE_IRQn);
中断:
/****************************************
*函数名称:RAMPE_IRQHandler
*输 入:无
*输 出:无
*功 能:SRAM奇偶校验错误
******************************************/
void RAMPE_IRQHandler(void)
{
if(SYS->SRAM_STATUS & SYS_SRAM_STATUS_PERRIF_Msk)
{
//SYS->SRAM_STATUS |= SYS_SRAM_STATUS_PERRIF_Msk; /*只读*/
/*EEPROM中做记录*/
EEPROM[RAM_Fault_Num_Add] = 5; /*RAM Fault次数*/
EEPROM[RAM_Fault_Flag_Add] = 1; /*RAM Fault标志*/
WorkWriteEEPROM();
}
}
有没有大神用过此功能? |