【问题标题】:STM32F107 Read Out Protection by Code HALSTM32F107 通过代码 HAL 进行读出保护
【发布时间】:2020-07-15 21:50:23
【问题描述】:

我想启用正常的读出保护,目前我在 ST Link Utility 中执行此操作,但更好的是在代码中。我发现了一些旧的 sn-ps,它们适用于旧的 Std Lib,而不是 HAL:

 if (FLASH_OB_GetRDP() != SET) {

  FLASH_OB_Unlock();

  FLASH_OB_RDPConfig(OB_RDP_Level_1);

  // Start the Option Bytes programming process
  if (FLASH_OB_Launch() != FLASH_COMPLETE) {
    // User can add here some code to deal with this error
  }

  FLASH_OB_Lock();
}

是否有人拥有适用于 HAL Lib 的正确代码?

谢谢!

【问题讨论】:

  • 您应该查看 ST 自己的固件示例。有一个application note 列出了所有示例。在此 PDF 中,我看到了 STM32F103 的示例(与您的 STM32F107 非常相似),“FLASH_Write Protection”(第 7/31 页)。该示例很可能是用 C 编写的,将其从 NUCLEO-F103RB 移植到您的目标应该不是很大的努力。
  • 但这是写而不是读出。
  • 你可能是对的 - 我没有检查代码示例。通常,这些示例旨在作为适应的起点。也许你可以修改一些细节来达到你所需要的?

标签: c stm32 stm32cubeide


【解决方案1】:

【讨论】:

  • 试过那个代码:HAL_FLASH_OB_Unlock(); HAL_FLASHEx_OBProgram(OB_RDP_LEVEL_1); HAL_FLASH_OB_Launch(); HAL_FLASH_OB_Lock(); 但我仍然可以用 ST Link Utility 读出 Flash
【解决方案2】:
  HAL_FLASH_Unlock();
  HAL_FLASH_OB_Unlock();
  pOBInit_for_readprot.OptionType = OPTIONBYTE_RDP;
  pOBInit_for_readprot.RDPLevel = OB_RDP_LEVEL_1;
  HAL_FLASHEx_OBProgram(&pOBInit_for_readprot);
  HAL_FLASH_OB_Launch();
  HAL_FLASH_OB_Lock();
  HAL_FLASH_Lock();

有一个对 RDP 进行编程的工作程序。 由我的 stm32f4 项目证明。

【讨论】:

  • FLASH_OBProgramInitTypeDef pOBInit_for_readprot;读/写结构
猜你喜欢
  • 2015-12-07
  • 2020-03-03
  • 2011-12-04
  • 1970-01-01
  • 2021-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多