不进入halt状态可以操作mcu的flash吗

我先来实际测试一下

使用的软件是**SPAnalyzer **(下载链接https://std.plus)

  1. 下载可执行的bin文件,确保CPU进入running状态 1 2 3

  2. 在cpu running状态下尝试擦除操作 4 5 6

  3. 先执行halt操作再尝试擦除操作 7 8

在很多MCU中,操作Flash(例如擦除、写入或修改Flash存储)通常需要将CPU进入一个“暂停”或“停止”状态,这有助于避免在Flash操作期间发生中断或未完成的操作,确保Flash的稳定性和正确性。具体要求取决于MCU的型号和其Flash控制器的设计 一般来说,MCU的Flash操作有以下几种常见要求:

进入暂停模式(Halt/Stop模式): 在某些MCU中,为了确保对Flash的操作不被打断,需要将CPU或主频降低到最低或使CPU进入停止状态。这可以避免发生意外的中断,尤其是对于需要持续长时间写入或擦除操作的情况。 禁止中断: 即使没有完全暂停CPU,通常也会禁止中断和外部事件,以防止在Flash操作过程中发生干扰。

点赞
收藏

评论区

加载中...

相关推荐

stm8s和stm8l低功耗对比

stm8s和stm8l低功耗对比    在低功耗应用中,一般来说mcu是常态halt模式,然后偶尔被唤醒(外部中断或者内部定时唤醒)进入运行模式。所以对比低功耗性能,一般来说只需要对比run模式和halt下的功耗即可,因为项目选用的是通过内部定时器唤醒,所以选用activehaltmode。以下是stm8s003

java操作lua脚本

java操作lua脚本实例1.前言在上一篇文章Redis中使用Lua脚本来实现并发下的原子操作中我对Lua语言的一些简单的语法及其在Redis中的操作进行了介绍,但是在Java开发中我们还需要进一步的学习才能使这种技术落地。今天就结合SpringDataRedis这个我们经常使用的Redis开发组件来实际尝试一下Lua脚本。

java 线程及线程池

说明:线程共包括以下5种状态。1. 新建状态(New):线程对象被创建后,就进入了新建状态。例如,ThreadthreadnewThread()。2. 就绪状态(Runnable):也被称为“可执行状态”。线程对象被创建后,其它线程调用了该对象的start()方法,从而来启动该线程。例如,thread

STM32 实现内部Flash的读写(HAL库版)

  Flash中文名字叫闪存,是一种长寿命的非易失性(断电数据不丢失)的存储器。可以对称为块的存储器单元块进行擦写和再编程,在进行写入操作之前必须先执行擦除。一个NandFlash由多个块(Block)组成,每个块里面又包含很多页(page)。每个页对应一个空闲区域/冗余区域(sparearea),这个区域不是用来存储数据的,用于放置数据的校验值检测和

VirtualBox导入已安装好的操作系统的方法

VirtualBox导入已安装好的操作系统的方法1、修改UUID进入VirtualBox安装目录,运行VBoxManage修改UUID,命令运行如下:D:\\VirtualBoxVBoxManage.exe internalcommands setvdiuuid E:\\VirtualX

STM32 实现内部Flash的读写(HAL库版)

  Flash中文名字叫闪存,是一种长寿命的非易失性(断电数据不丢失)的存储器。可以对称为块的存储器单元块进行擦写和再编程,在进行写入操作之前必须先执行擦除。一个NandFlash由多个块(Block)组成,每个块里面又包含很多页(page)。每个页对应一个空闲区域/冗余区域(sparearea),这个区域不是用来存储数据的,用于放置数据的校验值检测和