0

我正在尝试为 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");
    }

但这种说法永远不会成立。

4

1 回答 1

1

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

要修改用户选项值,请按照以下顺序进行:

  1. 通过检查 FLASH_SR 寄存器中的 BSY 位来检查没有正在进行的 Flash 存储器操作
  2. 在 FLASH_OPTCR 寄存器中写入所需的选项值。
  3. 设置 FLASH_OPTCR 寄存器中的选项起始位 (OPTSTRT)
  4. 等待 BSY 位被清除。

您只实施了第 2 步。

请注意,要设置双组模式,您必须清除该位。

Bit 29 nDBANK:非双组模式

1:Flash 用户区被视为具有 256 位读取访问权限的单个存储区。

0:Flash 用户区被视为具有 128 位读取访问权限的双存储区(双存储区模式功能有效)

于 2019-09-02T14:07:57.697 回答