我正在尝试为STM32F779II设置双存储区模式,但根本没有设置。

所以我在尝试以下代码之前先尝试了主要方法

  HAL_FLASH_Unlock();

  HAL_FLASH_OB_Unlock();

  FLASH->OPTCR |= FLASH_OPTCR_nDBANK_Msk;

  HAL_FLASH_OB_Lock();

  HAL_FLASH_Lock();


当我尝试检查内存是在单模式还是双模式时:

if((OBInit.USERConfig & OB_NDBANK_SINGLE_BANK) == OB_NDBANK_DUAL_BANK){
     printf("Dual bank mode is set");
    }


但是那句话永远不会成立。

最佳答案

参考手册中描述了该过程。


  要修改用户选项值,请遵循以下顺序:
  
  
  通过检查存储器中的BSY位,检查是否没有正在进行的闪存操作。
  FLASH_SR寄存器
  将所需的选项值写入FLASH_OPTCR寄存器。
  将FLASH_OPTCR寄存器中的选项起始位(OPTSTRT)设置为
  等待BSY位被清除。
  


您仅实现了步骤2。

请注意,要设置双存储区模式,必须清除该位。


  位29 nDBANK:非双存储区模式
  
  1:Flash用户区域被视为具有256位读取访问权限的单个存储区。
  
  0:Flash用户区域被视为具有128位读取访问权限的双存储区(双存储区模式功能处于活动状态)

07-24 09:45
查看更多