stm32 - 删除STM32 Flash Sector挂起的程序

标签 stm32 freertos flash-memory

我正在使用 FreeRtos,并且在其中一项任务中我使用以下代码删除闪存的一个扇区

HAL_FLASH_Unlock();
    // Fill EraseInit structure
        static FLASH_EraseInitTypeDef EraseInitStruct;
    EraseInitStruct.TypeErase = FLASH_TYPEERASE_SECTORS; 
    EraseInitStruct.VoltageRange = FLASH_VOLTAGE_RANGE_3;
    EraseInitStruct.Sector = sector;
    EraseInitStruct.NbSectors = numOfSectorsToErase;
HAL_FLASHEx_Erase_IT(&EraseInitStruct); 
  
    HAL_FLASH_Lock();

我认为这是一个非阻塞调用来删除扇区,但是当调用它时,所有其他线程似乎都被抢占 100 毫秒(如示波器上所示),直到删除完成。我一定做错了什么,因为我使用的是中断版本的删除。它不应该像这样挂起所有东西,对吗?

(我确信我正在删除程序代码不驻留的扇区。扇区6)

最佳答案

文档很清楚:

enter image description here

始终阅读文档,而不是互联网论坛。

关于stm32 - 删除STM32 Flash Sector挂起的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64578720/

相关文章:

gcc - 使用 GCC 编译器的 ARM 核心堆栈回溯(当有 MSP 到 PSP 切换时)

通过C代码计算FLASH利用率

android - 将文件从 sdCard 移动到 android 中的闪存?

timer - sw4stm32中如何使能中断功能

c - 如何提高 CMWX1ZZABZ-091 RTC(实时时钟)的精度

FreeRTOS:为什么要在 isrHandler 中调用 taskYIELD_FROM_ISR() 方法

c++ - 如何使用 C++ 将字符存储在闪存 STM32F4 HAL 中?

c - 如何将命令行参数传递给半托管程序?

c - 在 Debian 上不用 IDE 编程 STM32F4x

linux - u-boot中的fatloat地址限制