本文主要是介绍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();
}
分析:查阅资料,如果擦除前不关闭缓存的话会发生缓存不一致现象。这种现象会引发大问题的,具体什么问题还不清楚,需要继续深入分析。
这篇关于STM32H5 擦除flash时,GetSector进入Error_Handler的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!