ST意法半导体
直播中

小芳

13年用户 939经验值
私信 关注
[问答]

为什么无法在STM32H7上设置RDP?

我正在尝试在 STM32H7 上以编程方式设置 RDP。我正在运行下面的代码。除了返回 HAL_ERROR 的 HAL_FLASH_OB_Launch() 之外,所有函数都返回 HAL_OK,我不清楚为什么。关于如何调试它的任何想法也会有所帮助。
  • int main(void)
  • {
  •         /* MCU Configuration */
  •         /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  •         HAL_Init();
  •         /* USER CODE BEGIN Init */
  •         MX_RTC_Init();
  •         int err = 0;
  •         if ( HAL_FLASH_Unlock() != HAL_OK ) { err = 1 }
  •         if ( HAL_FLASH_OB_Unlock() != HAL_OK ) { err = 1}
  •         FLASH_OBProgramInitTypeDef ob_struct = {0};
  •         // RDP on Flash bank 2
  •         ob_struct.Banks = FLASH_BANK_2;
  •         ob_struct.OptionType = OPTIONBYTE_RDP;
  •         ob_struct.RDPLevel = OB_RDP_LEVEL_1;
  •         // Program options bytes
  •         HAL_FLASHEx_OBProgram(&ob_struct);
  •         if ( HAL_FLASH_OB_Launch() != HAL_OK) { err = 1 }
  •         // Lock memory
  •         HAL_FLASH_OB_Lock();
  •         HAL_FLASH_Lock();
  •         /* USER CODE END Init */








回帖(1)

黎明

2023-2-1 11:52:40
该代码无法编译。
此外,err 始终为 1。
我怀疑您的帖子中遗漏了某些内容,或者您将 err=1 误解为失败。
也可能是您处于 RDP 级别 2,无法更改。
无论如何,在我修复代码后,它可以在我的 STM32H743 芯片上运行。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分