MPU内存保护中打开MPU_InitStruct.IsCacheable = MPU_ACCESS_CACHEABLE,后SDRAM就不能正常的写数据,谁能帮我解惑下

2019-07-20 16:53发布

static void MPU_Config(void)
{
  MPU_Region_InitTypeDef MPU_InitStruct;

  /* Disable the MPU */
  HAL_MPU_Disable();

  /* Configure the MPU attributes as WB for SDRAM */
  MPU_InitStruct.Enable = MPU_REGION_ENABLE;
  MPU_InitStruct.BaseAddress = 0xC0000000;
  MPU_InitStruct.Size = MPU_REGION_SIZE_32MB;
  MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
  MPU_InitStruct.IsBufferable = MPU_ACCESS_BUFFERABLE;
  MPU_InitStruct.IsCacheable = MPU_ACCESS_CACHEABLE;
  MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;
  MPU_InitStruct.Number = MPU_REGION_NUMBER0;
  MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;
  MPU_InitStruct.SubRegionDisable = 0x00;
  MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE;

  HAL_MPU_ConfigRegion(&MPU_InitStruct);

  /* Enable the MPU */
  HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT);
}将  MPU_InitStruct.IsCacheable = MPU_ACCESS_CACHEABLE;改成
  MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE;后
sdram就可以正常的写书数据了,谁能帮小弟弟我解释下

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。