Hi Joshua,
Everything should be fine as long as you enable refresh before you begin to use the SDRAM. If you import the SEMC example from SDK v2.3.1 you can see:
base->SDRAMCR3 |= SEMC_SDRAMCR3_REN_MASK;
at the end of SEMC_ConfigureSDRAM (line 417 of fsl_semc.c).
Please note that the same example has a bug in SEMC_GetDefaultConfig. In the function the following happens:
void SEMC_GetDefaultConfig(semc_config_t *config)
{
...
semc_queuea_weight_t queueaWeight;
semc_queueb_weight_t queuebWeight;
...
...
config->queueWeight.queueaWeight = &queueaWeight;
config->queueWeight.queuebWeight = &queuebWeight;
}
As you can see, queueaWeight and queuebWeight are non-static local variables, so their space on the stack is returned as soon as this function exits, which means their values are no longer valid by the time config is actually used.