
硬件平台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 如有侵权请联系删除 |
STM32 GUI LTDC 最大像素时钟评估方法
【2025·STM32峰会】GUI解决方案实训分享1-对LVGL咖啡机例程的牛刀小试以及问题排查
OpenBLT移植到STM32F405开发板
为什么要先开启STM32外设时钟?
【STM32MP157】从ST官方例程中分析RPMsg-TTY/SDB核间通信的使用方法
【经验分享】STM32实例-RTC实时时钟实验④-获取RTC时间函数与中断服务函数
STM32 以太网 MAC Loopback 的实现
STM32功能安全设计包,助力产品功能安全认证
基于STM32启动过程startup_xxxx.s文件经验分享
HRTIM 指南