FMC部分代码如下:
uint8_t set_data_base_addr(uint32_t addr)
{
uint32_t config[2];
config[0] = fmc_read(FMC_CONFIG0_BASE);
config[1] = fmc_read(FMC_CONFIG1_BASE);
if ((!(config[0] & 0x1)) && (config[1] == addr))
{
printf("\n Set base end\n");
return 0;
}
config[0] &= ~0x1;
config[1] = addr;
FMC_ENABLE_CFG_UPDATE();
fmc_erase(FMC_CONFIG0_BASE);
fmc_write(FMC_CONFIG0_BASE, config[0]);
fmc_write(FMC_CONFIG1_BASE, config[1]);
FMC_DISABLE_CFG_UPDATE();
printf("Set data flash base as 0x%x.\n", addr);
SYS->IPRST0 = SYS_IPRST0_CHIPRST_Msk;
return 0;
}
void fmc_config_init(void)
{
UNLOCKREG();
fmc_enable();
set_data_base_addr(EP_HEADER_ADDR);
fmc_disable();
LOCKREG();
}
其部分在执行完SYS->IPRST0 = SYS_IPRST0_CHIPRST_Msk 语句后,并未重置系统,系统卡死未工作 |