我正在尝试为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位读取访问权限的双存储区(双存储区模式功能处于活动状态)