
硬件平台STM32F407VE,HAL库。标准库不会有此问题 软件跑freertos 问题描述:STM32 擦除flash失败,CPU跳不出串口中断,看门狗重启。 问题一、FlashStatus!=HAL_OK解决办法: 1、flash擦写前禁止flash数据缓存,操作完后恢复 /* Disable data cache */ __HAL_FLASH_DATA_CACHE_DISABLE();//FLASH操作期间,必须禁止数据缓存 /* Enable data cache */ __HAL_FLASH_DATA_CACHE_ENABLE();//开启数据缓存 2、如果上述办法还不行可以在操作flash前增加清标志操作 /* Clear pending flags (if any) */ __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | \ FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR); 3、看门狗影响 操作flash期间不要调用HAL_IWDG_Refresh(&hiwdg); 并且看门狗未开启或者屏蔽MX_IWDG_Init();的初始化 软件最好不调用HAL_IWDG_Refresh(&hiwdg); ![]() 问题二:擦除flash失败,死机问题 我用了串口空闲中断+DMA接收、发送模式 软件仿真发现很容易在擦flash的时候CPU频繁进入串口中断(其他任务无法进入),最后复位 关键问题是: HAL_UART_IRQHandler(&huart2);必须在中断里优先执行,放在最前端,不能放在用户程序以后。 如果不用flash擦写,顺序其实关系不大。 可能跟芯片也有关系(之前用F429就没这个问题) ![]() ———————————————— 版权声明:axsdffff1 如有侵权请联系删除 |
DAC,COMP,HRTIM Fault 功能的使用
一个软件引起的 LSE 驱动不良的问题
STM32 GUI LTDC 最大像素时钟评估方法
STM32 Cordic 运算速度评估
全新OpenSTLinux 6.1版本发布
ST-LINK Utility介绍、下载、安装和使用教程
【2025·STM32峰会】GUI解决方案实训分享1-对LVGL咖啡机例程的牛刀小试以及问题排查
OpenBLT移植到STM32F405开发板
为什么要先开启STM32外设时钟?
【STM32MP157】从ST官方例程中分析RPMsg-TTY/SDB核间通信的使用方法