硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1032|回复: 1
收起左侧

【求助】STM32F42x Flash报PGSERR错误

[复制链接]

0

主题

0

回帖

0

积分

新手上路

积分
0
发表于 2024-9-4 13:47:25 | 显示全部楼层 |阅读模式
本帖最后由 kishs 于 2024-9-4 13:49 编辑

在使用bootloader跳转到APP区域后,运行几步就开始报PGSERR错误导致不能再对Flash进行擦写

以下相应的操作:

* bootloader程序:


* APP程序:

1725418242813.png

有几点奇怪的地方:

1、FLASH->SR 的PGSERR报错时间并无明显特定时间,在bootloader跳转到APP后,单步调试并不能确定哪里报故。
2、在APP跳转到报故的一段时间并没有对Flash进行任何操作

3、有其他APP程序执行相同操作,会出现偶尔报错,偶尔不报错,对比报错前后并无特殊处理

* 补充代码:

```C
#define  PREFETCH_ENABLE              1U
#define  INSTRUCTION_CACHE_ENABLE     1U
#define  DATA_CACHE_ENABLE            1U

HAL_StatusTypeDef HAL_Init(void)
{
  /* Configure Flash prefetch, Instruction cache, Data cache */
#if (INSTRUCTION_CACHE_ENABLE != 0U)
  __HAL_FLASH_INSTRUCTION_CACHE_ENABLE();
#endif /* INSTRUCTION_CACHE_ENABLE */

#if (DATA_CACHE_ENABLE != 0U)
  __HAL_FLASH_DATA_CACHE_ENABLE();
#endif /* DATA_CACHE_ENABLE */

#if (PREFETCH_ENABLE != 0U)
  __HAL_FLASH_PREFETCH_BUFFER_ENABLE();
#endif /* PREFETCH_ENABLE */

  /* Set Interrupt Group Priority */
  HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);

  /* Use systick as time base source and configure 1ms tick (default clock after Reset is HSI) */
  HAL_InitTick(TICK_INT_PRIORITY);

  /* Init the low level hardware */
  HAL_MspInit();

  /* Return function status */
  return HAL_OK;
}
```

1725418158134.png
1725418195997.png
1725417547752.png
1725417631600.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117529
QQ
发表于 2024-9-5 08:35:36 | 显示全部楼层
这个代码是APP里面的吗,应该main函数里面优先设置新的VTOR中断向量表的地址。

因为HAL_Init会初始化滴答定时器并使用Systick中断


下载.png

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 16:00 , Processed in 0.041045 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表