STM32H5 擦除flash时,GetSector进入Error_Handler

背景及问题:开发项目时,操作内部flash,调用getsetcor时,进入hardfault,经调试发现FLASH_BANK_SIZE读不到值,FLASH_BANK_SIZE取值来源于以下步骤:一时没有任何思路

((((*((uint16_t *)FLASHSIZE_BASE)) == 0xFFFFU)) ? FLASH_SIZE_DEFAULT : \

((((*((uint16_t *)FLASHSIZE_BASE)) == 0x0000U)) ? FLASH_SIZE_DEFAULT : \

(((uint32_t)(*((uint16_t *)FLASHSIZE_BASE)) & (0xFFFFU)) << 10U)))

解决方案:

在擦除操作开始前加上以下语句,问题解决

/* Disable instruction cache prior to internal cacheable memory update */

if (HAL_ICACHE_Disable() != HAL_OK)

{

Error_Handler();

}

分析:查阅资料,如果擦除前不关闭缓存的话会发生缓存不一致现象。这种现象会引发大问题的,具体什么问题还不清楚,需要继续深入分析。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值